回 帖 发 新 帖 刷新版面

主题:竞赛题求解

问题描述:
给定一个数列,其行数,列数不大于10的9次方,第一行为 1 2 3 5 8……,及菲波那契数列,第n行的开头的数字为前n-1行没有出现的最小整数,第2个数字的公式为a[n,2]=2*a[n,1]-(n-1),往后为菲波那契数列。
给定行数i,列数j,求这个数对m(m小于10的6次方)取模的结果。
我的程序如下,可结果不对,请各位大虾指教!


#include
void main()
{
unsigned long flag,b=0,d=1,e,f,n,num,i,j;
cout<<"Please enter row,colum and number:"< cin>>i>>j>>num;
for(flag=0;flag<=4;flag++)
    {
     for(n=0;n       if(n==i-1)
       break;
      else
      {
       if(flag==0){d=d+3+b;b=d%num;}
       if(flag==1){d=d+2+b;b=d%num;}
       if(flag==2){d=d+3+b;b=d%num;}
       if(flag==3){d=d+3+b;b=d%num;}
       if(flag==4){d=d+2;b=d%num;}
      }
   }
if(i==1&&j==2)d=2%num;
if(j==1)d=d%num;
if(j!=1)
  {
   f=d;
   e=d*2-i+1;
   for(n=0;n     {
     d=(f+e)%num;
     f=e;
     e=d;
    }
  }
cout< }

回复列表 (共10个回复)

沙发

为什么把flag 定义成四啊

板凳

输出与输入的有些不对

3 楼

有高手可以找出每个数字的规律吗?

4 楼

flag定义为4,因为从0到4,一共5个数字,我找到的规律是,从第一行的开头开始,以后每一行的开头顺次加上3,2,3,3,2,这个循环有5个元素,所以flag定义为4

5 楼

这是什么语言啊?

6 楼

大哥,这是BC啊!

7 楼

这样做没用de 偶去年AHOI的时候基本就是这样
得用黄金分割和矩阵乘法:(

8 楼

看来参加过AHOI!请详细的解释以下!

9 楼

呵呵,hnoi的题目
就是用黄金分割跟矩阵搞了
你的那个程序找的规律不对的

10 楼

说说啊!

我来回复

您尚未登录,请登录后再回复。点此登录或注册