在序列a1,a2,…,an中,对于i>1,ai是满足下面两个性质的最小正整数:
发布网友
发布时间:2023-07-04 00:03
我来回答
共1个回答
热心网友
时间:2023-09-17 15:57
// ttt.cpp : Defines the entry point for the console application.
//
#include "iostream.h"
int main(int argc, char* argv[])
{
int x,a[10],k,n,i,b[10],j,s,t,t2,s2,t0;
//数组a,b初始化为0
for(i=0;i<10;i++)
{
a[i]=0;
b[i]=0;
}
//a[0]中保存第一个数列的值
a[0]=1;
k=3;
n=6;//执行n-1次循环,第一次求第二项,第n-1次求第n项
s=0;
for(i=1;i<n;i++)
{
//把数组中保存的值转换为十进制数后存入s,这是为了方便后边的代码能进行比较和自加运算
j=0;t=1;s=0;
while(a[j]!=0)
{
s+=a[j]*t;
j++;t=t*10;
}
j=0;x=s;s=s*k;
while(s>0)
{
a[j]=s%10;
s=s/10;j++;
}
//计算k*s的各位数的和保存入s中
s=0;j=0;
while(a[j]!=0)
{
s+=a[j];
j++;
}
//从s+1之后的数开始检验,该数各位数之和是否和前边的和相等
t2=x+1;j=0;
while(1)
{
t0=t2;j=0;
while(t0>0)
{
b[j]=t0%10;
t0=t0/10;j++;
}
s2=0;j=0;
while(b[j]!=0)
{
s2+=b[j];
j++;
}
if(s2==s) break;//如果求出的数较大,则不能把数保存在变量中用比较运算符比较,而应把数据的每一位保存到数组中,自己定义一个比较两个数组是否相等的函数
t2++;//同上,较大的数保存在数组中,应自己定义一个自己运算的函数
}
j=0;
while(b[j]!=0)
{
a[j]=b[j];
j++;
}
}
for(i=9;i>=0;i--)
cout<<a[i];
return 0;
}