zoukankan      html  css  js  c++  java
  • ZOJ2105 终于找到错误

                                      ZOJ2105:点击打开链接

    错误代码

    #include<stdio.h>
    #include<stdlib.h>
    int q[110];
    int main()
    {
    	int a,b,n,T;
    	
        while(~scanf("%d%d%d",&a,&b,&n)&&(a||b||n))
    	{
    		T=0;
    		q[1]=1;q[2]=1;
    		q[3]=(a*q[2]+b*q[1])%7;
    		for(int jj=4;jj<=100&&!T;jj++){
    			q[jj]=(a*q[jj-1]+b*q[jj-2])%7;
    			if(q[jj]==1&&q[jj-1]==1){
    				T=jj-2;
    	 			break;
    			}
    		}
    		n=n%T;
    		if(n==0) n=T;
    		printf("%d
    ",q[n]);
    	}
    	return 0;
    }

    找到错误了,就是周期不一定包括了连续的1  1, 比如这个值域:1 1  0  1 0 1 0 ....

    正确代码:

    /*
    zoj_2105    模拟
    观察 f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7.
    将<f(n-1),f(n-2)>看成一个组合,则不同的组合有7*7=49中。(因为f[n-1]和f[n-2]的取值范围都是0至6)
    假设循环周期为T,则f[n+T]=f[n],而T必定不超过50。找到循环周期要计算就很简单了。
    */
    #include <iostream>
    #include <cstdio>
    #include <string.h>
    using namespace std;
    int flag[7][7];
    int num[7][7];
    int f[100];
    
    int main()
    {
        int a,b,n,i;
        int sta,turn;
        while( scanf( "%d%d%d",&a,&b,&n ) && ( a||b||n ) )
        {
            memset( flag,0,sizeof(flag) );
            f[1]=1;
            f[2]=1;
            flag[1][1]=1;
            num[1][1]=1;
            for( i=3;i<=100;i++ )
            {
                f[i]=( a*f[i-1]+b*f[i-2] )%7;
                if( flag[ f[i] ][ f[i-1] ]==1 )
                {
                    sta=num[ f[i] ][ f[i-1] ];
                    turn=i-sta-1;
                }
                else
                {
                    flag[ f[i] ][ f[i-1] ]=1;
                    num[ f[i] ][ f[i-1] ]=i-1;
                }
            }
            printf( "%d
    ",f[ (n-sta)%turn+sta ] );
        }
        return 0;
    }
    


    It is your time to fight!
  • 相关阅读:
    作业九 主成分分析
    作业八 特征选择
    作业七 逻辑回归应用
    作业六 逻辑回归
    作业五 线性回归算法
    第十四次作业:手写数字识别-小数据集
    第十三次作业:深度学习-卷积
    第七次作业:7.逻辑回归实践
    第十二次作业:垃圾邮件分类2
    第十一次作业:朴素贝叶斯-垃圾邮件分类
  • 原文地址:https://www.cnblogs.com/hua-dong/p/7603942.html
Copyright © 2011-2022 走看看