2018計算導論とプログラム設計練習問題課九D.calc the sum
最初はタイトルのnが10^100000だったのは間違いだと思っていたのですが・・・Pythonはこれを計算しても引っかかってしまいました・・・そうではなくて、本当にこんなに大きいのですが・・・100000の配列REをつけたので、100001は過ぎて、このデータが本当にこんなに長いことを説明しました・・・考え方:初めて文字配列で読み取って、数位とを得て、それからintタイプで処理します(全部9でも900000にすぎないので、intよりずっと小さいです.)その後のfurtherDecodeは再帰的に書くことができますが、そのfor(;n;n/=10)sum+=n%10は比較的簡潔な書き方だと思います.
テーマは遠いエゼラス大陸に描かれており、数字を崇拝する種族がいる.彼らは万物が数字で構成されており、すべての数字が最後に単独の数字になると考えている.例えば、数字1990、S(1990)=1+9+9+0=19、S(19)=10、S(10)=1である.ある日、彼らは廃墟から遠い昔の羊の皮の巻物を見つけた.そこにはびっしりと数字が書かれていて、族長は巻物が人種の未来を予言できると思っていた.しかし、彼らは巻物を解読できません.あなたは彼らを助けることができますか?
入力フォーマットは、最初は、データ群数を表す数字T(T<=10)である.次のT行は、行ごとに1つの数n.(n<=10^1000000)
出力フォーマットはT行を出力、行ごとに1つの数で、羊皮巻物の数に対応するデジタルを表す.入力サンプル1 5555出力サンプル2
#include
int decode(char []);
int furtherDecode(int);
int main(int argc, char const *argv[])
{
int i,t;
char str[1000000];
scanf("%d",&t);
getchar();
for(i=0;i<t;i++)
{
gets(str);
printf("%d
",decode(str));
}
return 0;
}
int decode(char str[])
{
int i,sum=0;
for(i=0;i<strlen(str);i++)
sum+=str[i]-'0';
return furtherDecode(sum);
}
int furtherDecode(int n)
{
if(n<10)
return n;
else
{
int sum=0;
for(;n;n/=10) sum+=n%10;
return furtherDecode(sum);
}
}
テーマは遠いエゼラス大陸に描かれており、数字を崇拝する種族がいる.彼らは万物が数字で構成されており、すべての数字が最後に単独の数字になると考えている.例えば、数字1990、S(1990)=1+9+9+0=19、S(19)=10、S(10)=1である.ある日、彼らは廃墟から遠い昔の羊の皮の巻物を見つけた.そこにはびっしりと数字が書かれていて、族長は巻物が人種の未来を予言できると思っていた.しかし、彼らは巻物を解読できません.あなたは彼らを助けることができますか?
入力フォーマットは、最初は、データ群数を表す数字T(T<=10)である.次のT行は、行ごとに1つの数n.(n<=10^1000000)
出力フォーマットはT行を出力、行ごとに1つの数で、羊皮巻物の数に対応するデジタルを表す.入力サンプル1 5555出力サンプル2