1. 程式人生 > >洛谷 U6850 手機密碼

洛谷 U6850 手機密碼

-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 手機密碼