---------------------------------------------sky 数---------------------------------------
描述
AI有一天发现一种奇怪的四位数它的十六进制,十进制,十二进制的数字之和是相同的,这样的数就被称为sky数。
例如2992,其四位数字之和为2+9+9+2=22,它的十六进制数为BB0,其各位数字之和也为22,同时它的十二进制
数表示1894,其各位数字之和也为22。下面你要对一些sky数进行判断。
输入
输入多个四位正整数,遇到0代表输入结束。
输出
对于输入的每一个数,进行判断,如果是sky数,就输出“YES”,相反则输出“NO”。
输入样例 1
2992
1234
0
输出样例 1
YES
NO
#include<iostream>
using namespace std;
int tensix(int n)
{
int sum=0;
int a;
while(n>0)
{
a=n%16;
n=n/16;
sum=sum+a;
}
return sum;
}
int tentwo(int n)
{
int sum=0;
int a;
while(n>0)
{
a=n%12;
n=n/12;
sum=sum+a;
}
return sum;
}
int ten(int n)
{
int sum=0;
int a;
while(n>0)
{
a=n%10;
n=n/10;
sum=sum+a;
}
return sum;
}
int main()
{while(1)
{
int a;
cin>>a;
if(a==0) break;
int b=tensix(a);
int c=tentwo(a);
int d=ten(a);
if(b==c&&c==d)
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
}
}
总结:
进制转化模板:
数值n转化为k进制
#include<iostream>
using namespace std;
int main()
{
int n,k;
cin>>n>>k;
int a=0,m=0;
int num[10086];
while(n>0)
{
a=n%k;
n=n/k;
num[m]=a;
m++;
}
for(int i=m-1;i>=0;i--)
cout<<num[i];
}