我不会做
浙江理工大学月赛
题目描述
众所周知,duxing201606就是plw.
然而已经9102年了,plw仍旧没有npy。plw非常难过,于是他打开了他熟悉的zhihu.com/search 想找到原因
看了高赞回答后,plw感觉这辈子脱单渺茫,于是去找某C姓半仙算了一卦自己未来的npy.
只见那C姓半仙拿出一瓶5L的肥宅快乐水,且向青空径直撒了一把M记薯条,嘴里念念有词,霎时间,龙吟虎啸,鹤唳莺鸣,肥宅欢乐水便全部转移到了plw面前的铜盂中,说来也神了,那薯条到了盂中便组成了一个个汉字:
“眉如翠羽,肌似羊脂。脸衬桃花瓣,鬟堆金凤丝。秋波湛湛妖娆态,春笋纤纤娇媚姿”
plw看了之后非常开心,赶忙接着问C半仙自己什么时候能找到npy,C半仙知道plw对二进制很熟悉,于是给他提了一个问题并告知plw他要的答案就在这个问题的答案中:
给定一个X(若X为小数则取整数部分),如果X在二进制形式下所有位都为1,则输出X在二进制下的位数,反之则输出
Areyou[reallyX]sure??):[pardonX]???
其中需要注意的是上述字符串中[string*X]代表连续输出string字符串X(向上取整)次,且各个字母之间无空格,建议直接从题面复制
输入
文件第一行一个正整数T(T<=10)
接下来有T行,每行给定一个非负数X(X<=1<<20)
输出
T行,每行一个正整数或一段字符串
样例输入
1
3
样例输出
2
源代码:
#include<bits/stdc++.h>
using namespace std;
int t,n,m,k,p,l,r,u,v,ans,cnt,smu,po,sum,a[110000];
char str;
struct node {};
int main() {
scanf("%d",&t);
while(t--) {
double x;
scanf("%lf",&x);
n=x,sum=0,po=0;
if(x==0) {
cout<<"Areyou"<<"sure"<<"?"<<"?"<<")"<<":"<<"?"<<"?"<<"?"<<endl;
continue;
}
while(n) {
sum++,po+=(n%2),n/=2;
}
if(sum==po&&sum!=0) {
cout<<sum<<endl;
continue;
} else {
n=x;
if(n!=x)n++;
}
cout<<"Areyou";
for(int i=1; i<=n; i++)cout<<"really";
cout<<"sure"<<"?"<<"?"<<")"<<":";
for(int i=1; i<=n; i++)cout<<"pardon";
cout<<"?"<<"?"<<"?"<<endl;
}
#ifdef DEBUG
printf("Time cost : %lf s\n",(double)clock()/CLOCKS_PER_SEC);
#endif
return 0;
}