###### 问题遇到的现象和发生背景
到调用函数for循环那里不知道该是怎样的算法写出来
###### 用代码块功能插入代码,请勿粘贴截图
###### 运行结果及报错内容
###### 我的解答思路和尝试过的方法
###### 我想要达到的结果
#include
double fact(int x,int y);
int main()
{ int sum=0;
sum=sum+fact(int x,int y);
printf("%d\n",sum);
return 0;
}
double fact(int x,int y)
{ int i;
for(i=1;i<=y;i++)
{ x=x*10+x;
sum=sum+t;
}return (sum);
修改如下,供参考:
#include <stdio.h>
int fact(int x,int y); //double
int main()
{
int sum=0,a,b;
scanf("%d%d",&a,&b);//修改
sum=fact(a,b); //sum=sum+fact(int x,int y);修改
printf("%d\n",sum);
return 0;
}
int fact(int x,int y)//double
{
int i,sum = 0,t = 0;//修改
for(i=1;i<=y;i++)
{
t=t*10+x; //x=x*10+x; 修改
sum=sum+t;
}
return (sum);
}
思路是将式子改写为:
222+22+2
=200+20+20+2+2+2
#include<stdio.h>
long long fact(int x,int y){
int a=0,b=x;
for(int i=0;i<y;i++){
for(int j=1;j<i+1;j++) b*=10;
b*=y-i;
a+=b;
b=x;
}
return a;
}
int main()
{ int x,y;
scanf("%d%d",&x,&y);
x=fact(x,y);
printf("%d\n",x);
return 0;
}
第四行:外层循环,每层产生一个b,b代表x乘10的i次方的(y-i)倍。(有3个2,2个20,1个200,按照规律,i次项的系数是y-i(i从0开始))
第五行,内层循环,每层产生一个x乘10的j次方。此时b代表不带系数的每一项。
第六行,给项配上系数。(系数是y-i)。此时b代表多项式中每一项。
第七行,将此项加到多项式上。a表示多项式。
第八行,重置b为x,为下次循环准备。
这样,经过两层循环得到了:
x10^y+1x10^(y-1)+……+(y-1)x10^1+yx*10^0
即所求。