试题描述:
YSM 在年级里人缘特别好,大家都找他要 QQ 号,数学特别好的它有时也小卖弄一下,他把 QQ 号加密后告诉同学们,所以同学们要得到他的 QQ 号还得先解密。解密规则是这样的:首先将第一个数字删除,再讲第二个数字放到这串数的末尾,再将第 3 个数删除并将第 4 个数放到这串数的末尾,再将第5个数删除,........,以此类推,将最后一个数字也删除。按照刚才删除的顺序,把这些删除的数字连在一起,最后的 7 位就是 YSM 的 QQ 号。当然解密后的数字串肯定不止 7 位,不到 100 位。
输入:
一行,包含符合题目描述的一个数字串,表示加密后的 QQ 号码。
输出:
一个七位的数字串,表示 YSM 的 QQ 号。
输入示例:
631758924
输出示例:
5947283
这题是老师出给我的。。。当时就跪了。。。
现在看起来好水
第一眼看上去就是一道队列的题,建2个队列就行了。
代码实现:
#include<iostream> #include<string> #include<queue> #include<cstring> using namespace std; queue <char> Q; string a; int k; char ans[100000]; int main() { cin>>a; int len=a.length();//测长 for(int i=0;i<len;i++)Q.push(a[i]);//将数扔到队列中 while(Q.size()>0) { ans[k]=Q.front();//将当前的第一个数扔到结果数组中 k++;//标识符+1 Q.pop();//弹出这个数 Q.push(Q.front());//将下一个数扔到队列最后 Q.pop();//弹出这个数 } int str=strlen(ans); for(int i=str-7;i<str;i++)cout<<ans[i];//输出最后7位 return 0; }
希望大家继续关注我
时间: 2024-10-01 07:14:08