无聊写两个题解吧,上午做比赛拉的,感触很多!
Barney is standing in a bar and starring at a pretty girl. He wants to shoot her with his heart arrow but he needs to know the distance between him and the girl to make his shot accurate.
题意很简单,学过c语言的看样例就知道什么意思了,就是特殊情况实在太多,写的我好烦!
#include思维不行,代码能力勉强可以,导致以上写的比较繁琐,若有不懂的地方欢迎在评论区留言!using namespace std;const int N=1000+10;char a[N];int main(){ int i,j; while(~scanf("%s",a)) { int x=0,k1=0,k2=0; int len=strlen(a); int zheng=0; for(i=0; a[i]!='.'; i++) zheng=zheng*10+(a[i]-'0');//整数部分 k1=i; int k3=0; for(i=len-1;; i--) if(a[i]=='e') break; k2=i;//e的位置; j=k2-1; for(j=j; j>=0; j--) if(a[j]>'0'&&a[j]<='9') break; k3=j;//左起第一个不为0的位置,相当于舍去后缀0; if(zheng==0)//注意题目说了a、b 同时为0; { int f=0; for(i=0; i<=k3; i++) { printf("%c",a[i]); f=1; } if(!f) printf("0");//这是防0.0这种样例; printf("\n"); } else { i=k2+1; for(i=i; i =k2) { if(zheng!=0) printf("%d",zheng); i=k1+1; for(i=i; i
You are given a positive decimal number x.
这道题就是上一题的逆过程,给出这个实数,要你化成p.qEb的形式;
基本和上面差不多,就是注意一下前缀0与后缀0;
#include这个代码看起来貌似没有上一题那么复杂,主要是思维思路要清晰,找好方法,一遍A;using namespace std;const int N=1e6+10;char a[N];char b[N];int main(){ int i; while(~scanf("%s",a)) { int len=strlen(a); int k1=0,k2=0,k3=0; for(i=len-1; i>=0; i--) if(a[i]>'0'&&a[i]<='9') { k3=i;//右起第一个不为0的位置; break; } for(i=0; i '0'&&a[i]<='9') { k1=i;//左起第一个不为0的位置; break; } for(i=0; i =k1&&k2<=k3) { for(i=k1; i<=k3; i++) { if(a[i]=='.') continue; printf("%c",a[i]); if(i==k1) printf("."); } if(k2-k1==1) { printf("\n"); continue; } printf("E%d\n",k2-k1-1); } else { for(i=k1; i<=k3; i++) { if(a[i]=='.') continue; printf("%c",a[i]); if(i==k1&&k1!=k3) printf("."); } if(k2-k1==1) continue; printf("E%d\n",k2-k1-1); } } } return 0;}
下面就这两题说说我的感想吧:
就在昨天,我悟出了一个很重要又很平凡的方法。就是:做题,千万要想好思路再去写,思路清晰了代码自然很快就出来了,可是思维很混乱脑袋模模糊糊或者有一点想法就着手写,写出来是运气,写不出来(卡壳)是正常,就是这样不知道浪费了多少时间;一个题,静下心来做不会发很多时间(个人认为),可是往往大部分时间就是心浮气躁,往往一卡壳就又得停下来分析,最后发现思路错了,等于一直在做无用功,题没做出来时间又过去了,效率低下!!