第1题 好数
在一张无穷大的桌面上,从左往右摆放着无穷张卡片,卡片的编号是0至无穷,第K张卡片的价值是3的K次方(即3^k)。
对于一个正整数x来说,如果可以从桌面上选出若干张不同的卡片,选出来的卡片价值总和等于x,那么x就称为“好数”。
例如:3是“好数”,因为3=3^1;
1是“好数”,因为1=3^0;
12是“好数”,因为12=3^2+3^1;
但2不是“好数”,虽然2=3^0+3^0,但是3^0和3^0是相同的卡片,不符合要求。同理,19和20都不是“好数”。
给出n个整
输入格式
第一行,一个整数n。1<=n<=1000。
接下来n行,每行一个整数x,1<=x<=1000000000000000000。
输出格式
n行,每行YES或者NO。
输入/输出例子1
输入:
3
12
13
15
输出:
YES
YES
NO
样例解释
无
数,如果是“好数”,输出YES,如果不是,输出NO。
#include<bits/stdc++.h>
using namespace std;
int main()
{
long long i,t,n,k;
cin>>n;
for(i=1;i<=n;i++)
{
cin>>t;
while(t>1)
{
if(t%3>1)
{
k=1;
break;
}
t /= 3;
}
if(k==1)cout<<"NO"<<endl;
else cout<<"YES"<<endl;
k=0;
}
return 0;
}