北理工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;
}

 

posted @ 2019-08-31 19:49  郭怡柔  阅读(398)  评论(0)    收藏  举报