记录编号 330965 评测结果 AAAAAAAAAA
题目名称 [NOIP 2010冲刺四]报数 最终得分 100
用户昵称 GravatarRapiz 是否通过 通过
代码语言 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);
		}
	}
}