题目:I Hate 1111
题意:
给你一个数,问你是不是由 11,111,1111……构成,其中每一个数都可以用无限次
思路:
其实每个符合题意数都是可以由 11 和 111 这两个数
所构成。
例如:
11 = 11 * 1 + 111 * 0;
111 = 11 * 0 +111 * 1;
1111 = 11 * 101 + 111 * 0;
11111 = 11 * 1 + 111 * 100 ;
……
题目给出的样例:
33 = 11 * 3 + 111 * 0;
144 = 11 * 3 + 111 * 1;
以上只是列举了每一个数的一种情况,由此看来可以得出每一个 数 x 只要符合: a * 11 + b * 111 = x
时,就可以输出YES,否则就输出NO
代码:
#include <map>
#include <queue>
#include <stack>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 1e6,INF=0x3f3f3f3f;
typedef long long ll;
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int a,flag=0;
scanf("%d",&a);
for(int i=0;i*111<=a;i++)
{//首先枚举 111 的个数,之后再对 11 取余
if((a-i*111)%11==0)
{
printf("YES\n");
flag=1;
break;
}
}
if(!flag)
printf("NO\n");
}
return 0;
}