pat1060
来源:互联网 发布:手机淘宝店铺首页怎么装修 编辑:程序博客网 时间:2024/06/05 01:59
这题的话只能自己题目还是做少了,一直没想到居然还有前面多个0的情况,本题不难,但是想拿满分可能不是很容易,我的做法是把2个数字按是否为0来分的,非0的情况,指数怎么算,我的做法是用小数点的位置减去第一个非0非小数点的位置,但是如果减出来的值,小于0,还得加1,大家可以想下为什么
代码如下:
#include<stdio.h>#include<string.h>int main(){ int n; char c1[201],c2[201],cc1[201],cc2[201]; int l1,l2; int i,j; while(scanf("%d%s%s",&n,c1,c2)!=EOF) { l1=strlen(c1); l2=strlen(c2); int flag=1; int j1,j2; j1=l1; j2=l2; int is01,is02; is01=is02=1; int f1,f2; for(i=0;i<l1;i++) { if(c1[i]=='.') j1=i; if(c1[i]!='0'&&c1[i]!='.') is01=0; } for(i=0;i<l1;i++) { if(c1[i]!='0'&&i!=j1) { f1=i; break; } } for(i=0;i<l2;i++) { if(c2[i]=='.') j2=i; if(c2[i]!='0'&&c2[i]!='.') is02=0; } for(i=0;i<l2;i++) { if(c2[i]!='0'&&i!=j2) { f2=i; break; } } int ci1,ci2; ci1=ci2=0; int cnt1=0; int cnt2=0; if(is01==1) { cnt1=n; for(i=0;i<n;i++) cc1[i]='0'; cc1[n]='\0'; ci1=0; } else { ci1=j1-f1; if(ci1<0) ci1++; for(j=f1;j<l1;j++) { if(c1[j]=='.') continue; cc1[cnt1]=c1[j]; cnt1++; if(cnt1==n) { cc1[cnt1]='\0'; break; } } } if(is02==1) { cnt2=n; for(i=0;i<n;i++) cc2[i]='0'; cc2[n]='\0'; ci2=0; } else { ci2=j2-f2; if(ci2<0) ci2++; for(j=f2;j<l2;j++) { if(c2[j]=='.') continue; cc2[cnt2]=c2[j]; cnt2++; if(cnt2==n) { cc2[cnt2]='\0'; break; } } } if(ci1!=ci2) flag=0; if(strcmp(cc1,cc2)!=0) flag=0; if(flag) { printf("YES 0."); for(i=0;i<cnt1;i++) printf("%c",cc1[i]); printf("*10^%d",ci1); } else { printf("NO 0."); for(i=0;i<cnt1;i++) printf("%c",cc1[i]); printf("*10^%d ",ci1); printf("0."); for(i=0;i<cnt2;i++) printf("%c",cc2[i]); printf("*10^%d",ci2); } puts(""); } return 0;}
- pat1060
- PAT1060
- PAT1060
- pat1060. 爱丁顿数
- PAT1060. 爱丁顿数
- 【PAT1060】Are They Equal
- PAT1060解题报告
- PAT1060【大模拟啊】
- PAT1060 爱丁顿数(25)
- PAT1060——Are They Equal,利用字符串解题
- 道德经之自强者胜节选1
- Longest Substring Without Repeating Characters
- Pascal's Triangle II
- 最初的梦想
- Segment
- pat1060
- js常用正则表达式验证
- MFC中弹出对话框,父窗口消失不见的实现
- win7快速关闭程序的诀窍
- [leetcode]Pascal's Triangle
- POJ 3074 Sudoku
- POJ2109 Power of Cryptography(easy!)
- 深入java面试题目
- 字符串中出现的对称字符