目录
第一题-树根
思路:
为防止超出范围,所以用字符串接收,只有将字符串的每一位加起来存放到sum,循环判断是否为一位数
#include<iostream>
#include<string>
using namespace std;
int main ()
{
string str;
while(cin>>str)
{
int num = 0;
int sum = 0;
//用字符串接收后,将每一位都加起来
//直接用整形接收会超出长度
for(int i = 0; i < str.size(); ++i)
{
num += str[i]-'0';
}
while(num)
{
sum += num%10;
num = num/10;
//判断如果sum不是一个个位数,则更新num
if(num == 0 && sum/10 != 0)
{
num = sum;
sum = 0;
}
}
cout<<sum<<endl;
}
return 0;
}
第二题-星际密码
思路:
本题本质就是斐波那契数列,首先构建一个斐波那契数列数组,然后输入进来的每个数组对应的是斐波那契数列的下标,我们通过下标找到对应的数据输出即可
#include<iostream>
#include<stdio.h>
using namespace std;
int main ()
{
int arr[10000] = {0,1,2};
//构建一个斐波那契数列
for(int i = 3; i < 10001; ++i)
{
arr[i] = arr[i-1]+arr[i-2];
arr[i] %= 10000;
}
int n = 6;
while(cin>>n)
{
//将每组数作为下标在斐波那契数列中找到下标输出即可
for(int i = 0; i < n ; ++i)
{
int num;
cin>>num;
printf("%04d", arr[num]);
}
cout<<endl;
}
return 0;
}