富途笔试
富途今天第一题16进制那个是咋回事呀,AA变成8进制不是1212吗,1和2出现次数不是一样的吗,第二个ABCD不是12131415吗,这个不是1出现最多吗,第二题有大佬说下思路吗
全部评论
第二题:
方法:i从1开始,i - 1位是1就翻转i及两侧,最后判断最后一位是不是1则可。
有一种情况是翻转第一位和第二位,在字符串前面加个“1”然后用上面方法算即可
然后判断两种情况是不是都行,都行取最小,都不行就NO;
佬,能问一下大概的题型吗……
能问下投的是哪个岗位吗😁
代码
#include <string>
(30191)#include <iostream>
using namespace std;
void Flip(string &s,int start){
for(int i= start-1;i<=start+1;i++){
if(i>=0&&i<s.length()){
s[i]=s[i]=='0'?'1':'0';
}
}
}
void solve(){
string s;
cin>>s;
string tmp=s;
int len=s.length();
//翻转第一个元素
int cnt=0,ans=INT_MAX;
Flip(tmp,0),cnt=1;
for(int i=0;i<len-1;i++){
if(tmp[i]=='0') continue;
Flip(tmp,i+1),cnt++;
}
ans=tmp[len-1]=='0'?cnt:INT_MAX;
cnt=0,tmp=s;
for(int i=0;i<len-1;++i){
if(tmp[i]=='0') continue;
Flip(tmp,i+1),cnt++;
}
if(tmp[len-1]=='1') cnt=INT_MAX;
ans=min(ans,cnt);
if(ans==INT_MAX) cout<<"NO"<<endl;
else cout<<ans<<endl;
}
int main(){
int n;
cin>>n;
while(n--){
solve();
}
}
犯傻了
为啥我用python第一题就60%
t2 开关问题 假设i位前都已经是0 那么第i位是1的话只能通过翻转i+1来使其变为0 然后比较一下第0位是从0开始以及1开始谁更大就好了
八进制是252啊
第一题,AA换8进制是252,每次取3位算。
第二题不会寄。
相关推荐

点赞 评论 收藏
分享
06-12 17:46
门头沟学院 Java 
点赞 评论 收藏
分享

点赞 评论 收藏
分享