北理工2018年计算机学科夏令营上机考试
1.输入一串随机的数,用逗号隔开。如果有重复数字就输出最靠后的一个,没有重复的就输出-1。
输入:1,2,3,4,4,3,2,1 输出:1
输入:1,2,3,4,5,6,7,8 输出:-1
#include<string> #include<iostream> using namespace std; int main() { string s; cin>>s; int ans = -1; for(int i=0;i<s.size();i+=2) { for(int j=0;j<i;j+=2) { if(s[j]==s[i])ans=s[i]-'0'; } } cout<<ans<<endl; return 0; }
2.一次shift操作就是把一个单词的第一个挪到最后,单词有n位就最多挪n次,问可以和原单词相同几次。
输入:byebye 输出:2
输入:abcd 输出:1
#include<string> #include<iostream> using namespace std; int main() { string s; cin>>s; int cnt = 0; int m = s.size(); string a = s; while(m--) { string b = a; for(int i = 0;i<a.size();i++)a[i]=a[i+1]; a[a.size()-1]=b[0]; if(a==s)cnt++; } cout<<cnt<<endl; return 0; }

浙公网安备 33010602011771号