首页 > 其他 > 详细

UVa 40均匀的生成器

时间:2014-02-19 23:15:56      阅读:262      评论:0      收藏:0      [点我收藏+]

/*

* 解题思路:

* 题意比较好理解,就是求给出的step和mod能不能求到0~mod-1的所有数字,因为给出的两个数字可能达到千万级

*       所以标记数组不可以使用int 类型,会爆栈,使用char类型可以AC

在网上看了别人的解法才发现这题只要是考察,step和mod两个数若互质则就是Godd,否则ad

*/


#include <stdio.h>
#include <string.h>
#define A 10000005
char vis[ A ];
int main( )
{
    int m,n;
    int tmp,i,flag;
    while( ~scanf("%d%d",&m,&n) )
    {
        memset( vis , ‘0‘ , sizeof(vis) );
        vis[ m%n ] = ‘1‘;
        tmp = m%n ;
        while( 1 )
        {
            if( vis[ (tmp+m)%n ] != ‘0‘ ) break;
            vis[ (tmp+m)%n ] = ‘1‘;
            tmp = (tmp+m)%n;
        }
        for( i=flag=0;i<n;i++ )
            if( vis[ i ] == ‘0‘ ) flag = 1;
        if( flag )
            printf("%10d%10d    Bad Choice\n\n",m,n);
        else
            printf("%10d%10d    Good Choice\n\n",m,n);
    }
    return 0;
}


UVa 40均匀的生成器

原文:http://blog.csdn.net/u011886588/article/details/19483221

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!