序列问题???
序列a(1),a(2),…,a(n)。对于i>1,a(i)是满足下面2个性质的最小正整数:
(1) a(i) > a(i-1);
(2) a(i) 的各位数字的和与K×a(i-1)的各位数字的和相等。
例如,a1=1,k=2,n=6时,该序列的前6个元素是1,2,4,8,16,23。
编程任务:给定a1,k,n的值,计算该序列的第n项a(n)的值。
下面是我的程序,但是时间效率太差了,希望大家斧正...
#include<iostream>
using namespace std;
int sum(int n)
{
int sum=0;
while(1)
{
sum+=n%10;
n/=10;
if(n==0) break;
}
return sum;
}
int fun(int a1,int k,int n)
{
int a=a1,i,flag,b=a1;
for(i=0;i<n-1;i++)
{ flag=1;
while(1)
{ a++;
if(sum(a)==sum(k*b))
{
flag=0;
break;
}
}
b=a;
}
if(i=n-1) cout<<a<<endl;
return b;
}
int main()
{
int a1,k,n;
cin>>a1>>k>>n;
fun(a1,k,n);
return 0;
}
这个程序的时间效率很低,不知道那位朋友可以指点一下..