洛谷 U6850 手机密码
题目背景
小明的手机上设了一个由四个数字组成的密码,但是小明自己的记性不好,但又不想把密码直接记在纸上,于是便想了一个方法。
题目描述
小明有四行数字,每行数字都有n[i](<=250)位,第i行的数字代表着小明密码的第i位,小明密码的转换的方法是这样的:将这个数各位上的数加起来,会得到一个新数,重复这个操作,直到这个新数小于10。
n[i]不在输入中
输入输出格式
输入格式:
共四行,每行一个数。
输出格式:
一个数,表示 小明的四位数密码。
输入输出样例
输入样例#1:
123456789
32563343
26334
26452634654
输出样例#1:
9292
说明
- 数据说明
123456789=1+2+3+4+5+6+7+8+9=45=4+5=9
32563343=3+2+5+6+3+3+4+3=29=2+9=11=1+1=2
26334=2+6+3+3+4=18=1+8+9
26452634654=2+6+4+5+2+6+3+4+6+5+4=47=4+7=11=1+1=2
密码=9292
注:别想用int64(long long)骗分,真实数据里n[i]至少有一个会>20。
有2个数据里的n[4]<1。不知道洛谷会怎么评测
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; char s[5][251]; long long num; int ans[5]; int main(){ for(int i=1;i<=4;i++) cin>>s[i]; for(int i=1;i<=4;i++){ num=0; int len=strlen(s[i]); for(int j=0;j<len;j++) num+=s[i][j]-'0'; while(num>9){ long long x=num;num=0; while(x){ num+=x%10; x/=10; } } ans[i]=num; } for(int i=1;i<=4;i++) cout<<ans[i]; }
细雨斜风作晓寒。淡烟疏柳媚晴滩。入淮清洛渐漫漫。
雪沫乳花浮午盏,蓼茸蒿笋试春盘。人间有味是清欢。