洛谷 U6850 手機密碼
阿新 • • 發佈:2017-09-03
-a ring num 有一個 pro int std while long
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]; }
洛谷 U6850 手機密碼