您的位置:首页 > 其它

UVa 40均匀的生成器

2014-02-19 13:19 253 查看
/*

* 解题思路:

* 题意比较好理解,就是求给出的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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: