注册 登录
编程论坛 C++教室

这是我写的一个程序 ,找不出错误啊!各位帮帮忙。

尹卫 发布于 2010-04-07 16:34, 591 次点击
/*Description
对于所有的整数p和q并且q>0.规定p mod q得到的整数r满足0 <= r <= q ?1,从而可得p?r是可以整除q。例如:
109 %10 = 9
-7 %3 = 2
-56 %7 = 0
如下是Φ的一种功能:
i=1 Φ(i)=ai=2 Φ(i)=b   i=3 Φ(i)=c
i is even  Φ(i) =(f*Φ(i-1)-d*jΦ(i-2)+e*Φ(i-3))%h;
 i is odd  Φ(i) =(f*Φ(i-1)+d*jΦ(i-2)-e*Φ(i-3))%g;odd是奇数,even是偶数。
Input
多组测试数据,每组输入九个整数, a b c d e f g h i, 且i >= 0; 所有的数都小于1000;
Output
输出一个整数, 即当变量等于i时的函数值。
Sample Input
1 2 3 4 5 6 7 8 9
11 12 13 14 15 16 17 18 19
321 322 323 324 325 326 327 328 329
Sample Output
4
0
90*/
#include<iostream>
using namespace std;
int main(){
        int a,b,c,d,e,f,g,h,i,j[1000];
        while(cin>>a>>b>>c>>d>>e>>f>>g>>h>>i){
             j[0]=a;j[1]=b;j[3]=c;
             if(i>=3){
             for(int k=3;k<=i;k++){
               if(i&1)  j[i]=(f*j[i-1]-d*j[i-2]+e*j[i-3])%h;
               else j[i]=(d*j[i-1]+e*j[i-2]-f*j[i-3])%g;
               }
               }
               cout<<j[i]<<endl;                              
           }
        return 0;   
}
5 回复
#2
Bosen2010-04-07 17:05
有错误提示没?
#3
fenggaoyuehe2010-04-07 17:59
没看明白
#4
CC鸟2010-04-12 17:38
  while(cin>>a>>b>>c>>d>>e>>f>>g>>h>>i){
             j[1]=a;j[2]=b;j[3]=c;
             if(i>=3){
             for(int k=4;k<=i;k++){
               if(k&1)  j[k]=(f*j[k-1]-d*j[k-2]+e*j[k-3])%g;
               else j[k]=(d*j[k-1]+e*j[k-2]-f*j[k-3])%h;
               }
               }
               cout<<j[k]<<endl;                              
           }
          这是一种改法   
#5
CC鸟2010-04-12 17:42
i is even  Φ(i) =(f*Φ(i-1)-d*jΦ(i-2)+e*Φ(i-3))%h;
i is odd  Φ(i) =(f*Φ(i-1)+d*jΦ(i-2)-e*Φ(i-3))%g;odd是奇数,even是偶数。
 和              if(i&1)  j[i]=(f*j[i-1]-d*j[i-2]+e*j[i-3])%h;
               else j[i]=(d*j[i-1]+e*j[i-2]-f*j[i-3])%g;
对应不了阿,楼主是不是打错了            
#6
尹卫2010-04-19 12:20
回复 4楼 CC鸟
现在会这递归的方法会了;  但发现你的程序有些小问题,那个k的定义有些问题(小问题啦!)。
1