1080. 密码产生器
单点时限: 2.0 sec
内存限制: 256 MB
银行卡的安全和我们自身的利益息息相关,一般的银行卡密码都是有 6 位数字,如果以自己的生日为根据来设置密码的话,容易被破解。现在的任务就是要设计一个简单的密码产生器,让它能够把一串拼音字母转换为 6 位的数字(密码)。可以使用任意的好记忆的拼音串(比如姓名)作为输入,按着如下规则产生 6 位的数字密码:
第一步:把字符串 6 个一组折叠起来,比如 chencongkun
则变为:
chenco
ngkun
第二步:把所有垂直在同一位置的字符的 ASCII 码值相加,得出 6 个数字,如上面的,则得出:
209 207 208 227 209 111
第三步:按顺序取每个数字最后一位组成一个 6 位的密码,如上面的,则得出密码为 978791。
输入格式
第一行是一个整数 N, 表示测试的问题组数。以下 N 行每行只有一个字符串(字符串的长度不大于 100)
输出格式
对于每个问题,输出一行问题的编号(0 开始编号,格式:case #0:
等)
然后对每组数据,输出一个6位的密码数字。
样例
input
3 chencongkun wangbaoqiang huangjiaju
output
case #0: 978791 case #1: 005080 case #2: 943736
#include <iostream>
using namespace std;
int main()
{
int t;
cin>>t;
for(int i = 0;i<t;i++){
int a[6] = {0}; //初始化数组a
string s;
cin>>s; //读入字符串s
for(int j = 0; j < s.length(); j++)
{
a[j%6] += s[j]; //计算1-6各位置的和
}
cout<<"case #"<<i<<":"<<endl; //i为当前问题号
for(int j : a)
cout << j%10; //输出每个数字的最后一位
cout << endl;}
return 0;
}
今天上课看到for(int j:a)的这个循环,学一年的变成了还是头一次遇见,我真是服了自己了!!
就去菜鸟网站查了查————C++ for 循环 | 菜鸟教程 (runoob.com)https://www.runoob.com/cplusplus/cpp-for-loop.html
很基础了!!!我有罪!