杭电 ACM Runtime Error(ACCESS_VIOLATION) 求解

Number Sequence
Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other)
Total Submission(s) : 22 Accepted Submission(s) : 10
Font: Times New Roman | Verdana | Georgia
Font Size: ← →
Problem Description
A number sequence is defined as follows:

f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7.

Given A, B, and n, you are to calculate the value of f(n).

Input
The input consists of multiple test cases. Each test case contains 3 integers A, B and n on a single line (1 <= A, B <= 1000, 1 <= n <= 100,000,000). Three zeros signal the end of input and this test case is not to be processed.

Output
For each test case, print the value of f(n) on a single line.

Sample Input
1 1 3
1 2 10
0 0 0

Sample Output
2
5

#include<stdio.h>
void main()
{
int a,b,n,i,k[49],t;
while(scanf("%d %d %d",&a,&b,&n)!=EOF&&(a!=0||b!=0||n!=0))
{
k[0]=1;
k[1]=1;
for(i=2;i<49;i++)
k[i]=(b*k[i-2]+a*k[i-1])%7;
for(i=2;i<49;i++)
if(k[i-1]==1&&k[i]==1)
t=i-1;
printf("%d\n",k[(n-1)%t]);
}
}
可是最小公倍数为啥是1008……

第1个回答  2010-10-01
#include<stdio.h>
void main()
{
int a,b,n,i,k[2005],t;
while(scanf("%d %d %d",&a,&b,&n)!=EOF&&(a!=0||b!=0||n!=0))
{
k[0]=1;
k[1]=1;
for(i=2;i<=1008;i++)
k[i]=(b*k[i-2]+a*k[i-1])%7;
for(i=2;i<=1008;i++)
if(k[i-1]==1&&k[i]==1)
t=i-1;
printf("%d\n",k[(n-1)%t]);
}
}
第2个回答  2010-10-01
周期的最小公倍数为1008本回答被提问者采纳

杭电acm总是Runtime Error (ACCESS_VIOLATION)怎么办?
可以用传递数组元素个数的方法解决即:用两个实参,一个是数组名,一个是数组的长度。runtime error (运行时错误)就是程序运行到一半,程序就崩溃了。比如说:除以零 数组越界:int a[3]; a[10000000]=10 指针越界:int * p; p=(int *)malloc(5 * sizeof(int)); *(p+1000000)=10 ...

杭电acm2023,Runtime Error (ACCESS_VIOLATION)?
即 a[51][6] \/\/ 另外一个问题就是 每次循环后count1 没有重新置零 \/\/***#include <stdio.h>int main(){ int n, m, i, j, count1, count2; double a[51][6]; \/\/后面程序访问到 n 所以应该定义为a[51][6] while(scanf("%d%d", &n, &m) != EOF) {...

杭电ACM Runtime Error(ACCESS_VIOLATION) 求解
void main(){ int a,b,n,i,k[2005],t;while(scanf("%d %d %d",&a,&b,&n)!=EOF&&(a!=0||b!=0||n!=0)){ k[0]=1;k[1]=1;for(i=2;i<=1008;i++)k[i]=(b*k[i-2]+a*k[i-1])%7;for(i=2;i<=1008;i++)if(k[i-1]==1&&k[i]==1)t=i-1;printf(...

...但是提交后提示Runtime Error (ACCESS_VIOLATION)
这题可以用二分求幂来做的。构造一个矩阵每次都是一个矩阵的转移。然后可以用二分。当然也是有周期的。最大的周期是49 因为这些数字都是要7的范围内 如果有两个数字连续一样的话,后面的数字就会和前面重复 f[i]==f[i+k]&&f[i+1]==f[i+1+k]这样的话后面就会重复的 \/\/此题是一个很典...

...已提交就是Runtime Error (ACCESS_VIOLATION)啊,请问是哪的问题_百...
runtime - error, 表示运行时错误, (access violation 表示访问越界)问题出在你的p指针上, 当执行完组数据时, 你的p指针没有指向申请的空间的起始地址,而是 当前这组测试数据的最后一个字符的地址, 当执行多组数据后,p指针会指向申请空间意外的地方,所以访问越界。我加了一个q指针, 保存...

杭电OJ1004题,结果Runtime Error(ACCESS_VIOLATION),请大牛为我查错
题目说每种颜色最多15个字符,而你的程序中char name[15];显然你忽略了字符串最后一个结束符0,起码应该改为char name[16];另外还有一个问题, 你忘记初始化q了,你仅仅只是给q赋了一个全局的初值0,每个case开始的时候都应该初始化。 在while(N){的第一句写q=0;这样就可以了 ...

杭电acm1003为什么都过不了,显示Runtime Error(ACCESS_VIOLATION)
你的 mm 没有赋初值,所以会Runtime Error 还有就是 while的循环结束条件不足,如果到最后 m还是没有==0你就错了 这是ac的代码 include

...杭电ACM上就显示runtime,error ACCESS_VIOLATION,求大神讲解_百度知 ...
char string_color[1000][15];char *string_num_max1[1000];可能是堆栈大小的问题,你这些变量都是在堆栈里分配的,换成动态分配试试.

为什么提示Runtime Error(ACCESS_VIOLATION)?我用c语言,我自己的CF4...
可能是算法问题,复杂度太大,超过运行时间。在杭电有时间限制的

...为什么总是提示Runtime Error(ACCESS_VIOLATION),我测试结果没问题啊...
Runtime Error一般是数组越界, 可能你数组定义小了

相似回答