https://citel.bjtu.edu.cn/acm/oj/problem/1841
Problem A. QQ等级
时间限制 1000 ms
内存限制 64 MB
题目描述
SonaXiao 以前对QQ等级特别在意,整天挂着QQ为了升等级,还经常和别人比等级高低。
QQ等级的规则是:1个星星是1级,4个星星可以变成1个月亮(4级),4个月亮可以变成1个太阳(16级),4个太阳可以变成1个皇冠(64级)。再往上不知道有没有了,反正 SonaXiao 是没见过。
现在告诉你QQ等级,你能知道他的具体图标表示吗?
输入数据
第一行为一个整数 )
,表示数据的组数。接下来对于每组数据:
第一行为一个整数 )
,表示询问的QQ等级。
输出数据
对于每组数据,输出一行:
第一行为一个字符串,表示对应的QQ等级图标。
其中*代表星星,^代表月亮,@代表太阳,~代表皇冠。
图标应按其表示的等级从高到低排序。
样例输入
2
2
49
样例输出
**
@@@*
样例说明
请注意输出的合法性,例如,当 5
时,应该输出 ^*(一个月亮一个星星),而不是 *****(五个星星),*^ 也是不合法的。
【分析】:按照题意皇冠太阳月亮星星分别代表四进制的四位(逢四进一).
【代码】:
#include <bits/stdc++.h> using namespace std; #define ll long long int main() { int t,n,ans,res; cin>>t; while(t--) { cin>>n; if(n>=64) { ans=n/64; n%=64; // printf("ans=%d n=%d\n",ans,n); while(ans--){ printf("~"); } } if(n>=16&&n<64){ ans=n/16; n%=16; // printf("ans=%d n=%d\n",ans,n); while(ans--){ printf("@"); } } if(n>=4&&n<16){ ans=n/4; n%=4; //printf("ans=%d n=%d\n",ans,n); while(ans--){ printf("^"); } } if(n>=1&&n<4){ ans=n/1; n%=1; // printf("ans=%d n=%d\n",ans,n); while(ans--){ printf("*"); } } printf("\n"); } }