题目地址:http://codeforces.com/contest/485
A题:Factory
按照过程模拟,并判断是否出现循环,如果出现循环,说明肯定不可能,直接跳出。
代码如下:
#include #include #include #include using namespace std;int _hash[100001];int main(){ int a, m, i, flag=0; memset(_hash,0,sizeof(_hash)); scanf("%d%d",&a,&m); a=a%m; _hash[a]=1; while(1) { a=a*2%m; if(a==0) { flag=1; break; } if(_hash[a]) { break; } _hash[a]=1; } if(!flag) puts("No"); else puts("Yes"); return 0;}
B题:Valuable Resources
直接找行与列的最大值和最小值,不多说
代码如下:
#include #include #include #include #include #include #include #include #include
C题:Bits
贪心
从小的开始,不断从低位开始加1,直到大于较大数为止。
代码如下:
#include #include #include #include #include #include #include #include #include
D题:Maximum Value
对于x来说,在k*x~(k+1)*x这段范围内,余数最大的肯定是最接近(k+1)*x的数,所以可以预处理出来所有最接近当前数的数,然后分别枚举每个数的倍数,并不断更新即可。
代码如下:
#include #include #include #include #include #include #include #include #include