第八届“图灵杯”NEUQ-ACM程序设计竞赛个人赛 I 买花
买花
https://ac.nowcoder.com/acm/contest/11746/I
思考
假设第一天买m朵,则m(2k - 1) = n,因为2 <= k <= 15,因此提前将2k - 1在2 <= k <= 15的值打印出来,然后for循环遍历,看n % (2k - 1) == 0 是否存在,如果存在输出YE5,否则输出N0
代码如下:
#include<iostream> #include<cstdio> int a[]={0,0,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767}; int main() { int T; scanf("%d",&T); int n; bool flag; for(int i = 0;i < T;i++) { flag = false; scanf("%d",&n); for(int j = 2;j <= 15;j++) { if(n % a[j] == 0) { flag = true; break; } } printf("%s\n",flag ? "YE5" : "N0"); } return 0; }
以为会超时,没想到居然过了,同时吐槽一下输出居然是YE5而不是YES,以及输出是N0而不是NO,这考人的仔细程度吗QAQ