Hdu 1014 Uniform Generator

数学题,用hash记录元素出现次数,有重复那么马上退出。循环次数最多为mod次就可以判断是否重复。

 CODE:

#include <stdio.h>
#include <stdlib.h>
#include < string.h>
using  namespace std;

const  int maxn =  100001;

int hash[maxn];

int main()
{
     int step, mod;
     while(~scanf( " %d%d ", &step, &mod))
    {
         int i;
         int flag =  0;
         int ans =  0;
        memset(hash,  0sizeof(hash));
        hash[ 0] =  1;
         for(i =  1; i < mod ; i++)
        {
            ans = (ans+step)%mod;
            hash[ans]++;
             if(hash[ans] >=  2)
            {
                flag =  1;
                 break;
            }
        }
        printf( " %10d%10d     ", step, mod);
        printf(!flag? " Good Choice\n\n ": " Bad Choice\n\n ");
    }
     return  0;

} 

你可能感兴趣的:(generator)