链接:
https://codeforces.com/problemset/problem/1526/B
题意:
给你一个数字X,判断X是否能由11,111,1111,11111,…等数字(一个数字可以无限用),组成
输入
3
33
144
69
输出量
YES
YES
NO
解:
思维
11不能拆解,111拆解只能是11*10+1,不进行拆解
1111拆解为11*101
11111拆解111*10+11
所以11和111为基本单位
判断x=a×11+b×111(a>=0,b>=0)是否成立即可
实际代码:
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
typedef long long int ll;
int main()
{
int t;
cin>>t;
for(int f=1;f<=t;f++)
{
ll x;
cin>>x;
ll mao=x/111;
bool ans=0;
for(int i=0;i<=mao+1;i++)
{
if((x-i*111)%11==0)
{
int a=i,b=(x-i*111)/11;
if(a>=0&&b>=0)
{
ans=1;
break;
}
}
}
if(ans) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
}
限制:
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output