基于范围的for循环(C++11):for(int j : a)---eoj密码产生器

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)icon-default.png?t=M4ADhttps://www.runoob.com/cplusplus/cpp-for-loop.html

很基础了!!!我有罪!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值