怎么修改,我是初学者,不大懂,望请假
Oj说runtime error
#include
long f(long n)
{
long q;
if(n==0)q=1;
else q=23*f(n-1)+233;
return q;}
int main(){
long y,n;
long b[1000];
int i,c;
i=0;c=0;
scanf("%ld",&n);
while(n!=-1){
c++;
y=f(n);
b[i++]=y%2333;
scanf("%ld",&n);
}
for(i=0;i<c;i++)
printf("%ld\n",b[i]);
return 0;
}
研究了一个半小时,求教你了
包含多组测试数据,对于每一组数据,输入n(0<=n<=10^18),当n=-1时,代表输入结束。
Sample Input:
0
1
2
-1
Sample Output:
1
256
1455
32位计算机上long int表示不了10^18这么大的数,最好用long long。还有你计算f(n)用到了函数递归,n的规模太大了,递归可能申请不了那么大的内存空间。你给我原题看看,这么大的n,估计不该用递归来做。
追问这个数列就叫“哈哈”数列:f(n)=23*f(n-1)+233, 守卫
给出一个数n,如果n能会回答出f(n)mod2333,守卫就让小鲜肉进入“哈哈”王国。你能帮小鲜肉A回答吗?(已知f(0)=1)
包含多组测试数据,对于每一组数据,输入n(0<=n<=10^18),当n=-1时,代表输入结束。
Output:
输出f(n)mod2333.
Sample Input:
0
1
2
-1
Sample Output:
1
256
1455
AC了,万分感激
那个,可以加你吗?
我是初学者,以后有什么问题可以请教你吗
#include
long f(long n)
{
long q;
if(n==0)q=1;
else q=23*f(n-1)+233;
return q;}
int main(){
long y,n;
long b[1000];
int i,c;
i=0;c=0;
scanf("%ld",&n);
while(n!=-1){
c++;
y=f(n);
b[i++]=y%2333;
scanf("%ld",&n);
}
for(i=0;i<c;i++)
printf("%ld\n",b[i]);
return 0;
}
Oj说runtime error
自己电脑没错
求救呀
追答应该是数组用的不对,爆掉了
追问怎么修改
帮我下(>_<)
追答现在身边没电脑==