對於所有正整數 n ,我們定義一函數 f(n) 為 n 的每一個十進位數字的總和,
若再把 f(n) 代入函數中可得最到 n,f(n),f(f(n)),f(f(f(n)))…
最後得到僅有一位數字的值,並定義該值為 g(n) 。
輸入n後,直接丟入迴圈進行算數
#include<iostream>
using namespace std;
int main()
{
int n,s; //input sum
while(cin >> n and n!=0)
{
while(n>9)
{
s = 0;
while(n!=0)
{
s+=n%10;
n/=10;
}
n = s;
}
cout << n << endl;
}
return 0;
}
chatgpt是使用遞迴來求解
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
using namespace std;
int get_sum(int n)
{
int sum=0;
while(n>0)
{
sum+=n%10;
n/=10;
}
return sum;
}
int main()
{
long long n;
while(cin>>n)
{
if(n==0)
{
cout<<0<<endl;
continue;
}
while(n>9)
{
n=get_sum(n);
}
cout<<n<<endl;
}
return 0;
}
以上是來自chatgpt給的程式碼
但當我放入CPE測資環境時他出現了些問題
因此理解他的程式後向chatgpt說了些程式碼的錯誤
之後更改為下方版本
最後才成功通過測資
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
using namespace std;
int get_sum(int n)
{
int sum=0;
while(n>0)
{
sum+=n%10;
n/=10;
}
return sum;
}
int main()
{
long long n;
while(cin>>n)
{
if(n==0)
{
break;
}
while(n>9)
{
n=get_sum(n);
}
cout<<n<<endl;
}
return 0;
}