標籤:too bsp names 轉換 重複 namespace hold cstring 一個
U6850 手機密碼題目背景
小明的手機上設了一個由四個數字組成的密碼,但是小明自己的記性不好,但又不想把密碼直接記在紙上,於是便想了一個方法。
題目描述
小明有四行數字,每行數字都有n[i](<=250)位,第i行的數字代表著小明密碼的第i位,小明密碼的轉換的方法是這樣的:將這個數各位上的數加起來,會得到一個新數,重複這個操作,直到這個新數小於10。
n[i]不在輸入中
輸入輸出格式輸入格式:
共四行,每行一個數。
輸出格式:
一個數,表示 小明的四位元密碼。
輸入輸出範例輸入範例#1:
123456789325633432633426452634654
輸出範例#1:
9292
說明
123456789=1+2+3+4+5+6+7+8+9=45=4+5=932563343=3+2+5+6+3+3+4+3=29=2+9=11=1+1=226334=2+6+3+3+4=18=1+8+926452634654=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 手機密碼