记录编号 |
330965 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[NOIP 2010冲刺四]报数 |
最终得分 |
100 |
用户昵称 |
Rapiz |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.007 s |
提交时间 |
2016-10-26 22:29:12 |
内存使用 |
0.29 MiB |
显示代码纯文本
#include<cstdio>
#include<cstring>
#define file(x) "readrule."#x
const int MAXN=300;
char s[MAXN];
int n,dotp;
int main(){
freopen(file(in),"r",stdin);
freopen(file(out),"w",stdout);
scanf("%s",s+1);
n=dotp=strlen(s+1);
++dotp;
for(int j=1;j<=n;j++) if(s[j]=='.') dotp=j;
int i=1;
if(s[i]=='-') printf("F"),++i;
else if(s[i]=='+') ++i;
bool fi=1;
for(;i<=n;i++){
if(fi){
if(s[i]=='.') printf("0"),--i;
else if(s[i]=='0'){
while(i+1<=n&&s[i+1]=='0') ++i;
if(dotp-i==1) printf("0");
}
else --i;
fi=0;
continue;
}
if(s[i]=='.') {
if(i==n) return 0;
bool f=1;
for(int j=i+1;j<=n;j++) if(s[j]!='0') {
f=0;
break;
}
if(f) return 0;
printf("D%s",s+i+1);
return 0;
}
if(s[i]=='0') {
while(i+1<=n&&s[i+1]=='0') ++i;
if(i+1<=n&&'1'<=s[i+1]&&s[i+1]<='9') printf("0");
}
else{
printf("%c",s[i]);
char ch;
switch((dotp-i)%4){
case 1:
switch((dotp-i)/4){
case 0:continue;
case 1:ch='W';break;
case 2:ch='Y';break;
}
break;
case 2:ch='S';break;
case 3:ch='B';break;
case 0:ch='Q';break;
}
printf("%c",ch);
}
}
}