无聊写两个题解吧,上午做比赛拉的,感触很多!

time limit per test

1 second

memory limit per test

256 megabytes

input

standard input

output

standard output

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<bits/stdc++.h>
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<len; i++)
x=x*10+(a[i]-'0');
if(x==0)//说明不用移;
{
for(i=0; i<=k3; i++)
printf("%c",a[i]);
printf("\n");
}
else if(x+k1<k2-1)
{
if(zheng!=0)
printf("%d",zheng);
i=k1+1;
if(x+k1<=k3)
{
for(i=i; i<=k3; i++)
{
printf("%c",a[i]);
if(i==x+k1&&i<k3)
printf(".");
}
}
else
{
for(i=i; i<=k3; i++)
printf("%c",a[i]);
for(i=i; i<=k1+x; i++)
printf("0");
}
printf("\n");
}
else if(x+k1==k2-1)
{
if(zheng!=0)
printf("%d",zheng);
i=k1+1;
for(i=i; i<k2; i++)
printf("%c",a[i]);
printf("\n");
}
else if(x+k1>=k2)
{
if(zheng!=0)
printf("%d",zheng);
i=k1+1;
for(i=i; i<k2; i++)
printf("%c",a[i]);
for(i=k2; i<=k1+x; i++)
printf("0");
printf("\n");
}
//// printf("%d %d %d %d\n",k1,k2,k3,x);
}
}
return 0;
}

思维不行,代码能力勉强可以,导致以上写的比较繁琐,若有不懂的地方欢迎在评论区留言!

time limit per test

2 seconds

memory limit per test

256 megabytes

input

standard input

output

standard output

You are given a positive decimal number x.

这道题就是上一题的逆过程,给出这个实数,要你化成p.qEb的形式;

基本和上面差不多,就是注意一下前缀0与后缀0;

#include<bits/stdc++.h>
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<len; i++)
if(a[i]>'0'&&a[i]<='9')
{
k1=i;//左起第一个不为0的位置;
break;
}
for(i=0; i<len; i++)
if(a[i]=='.')
{
k2=i;//找出点的位置;
break;
}
if(k1==k3&&k1==0)//说明只有一位,可能是1、1.0、100这些情况;
{
if(a[k1]=='0')
printf("0\n");
else
{
printf("%c",a[k1]);
if(k2==0)//没有小数点;
{
if(len==1)
{
printf("\n");
continue;
}
else
printf("E%d\n",len-1);
}
else
{
if(k2-k1==1)
{
printf("\n");
continue;
} else
printf("E%d\n",k2-k1-1);
}
}
continue;
}
if(k2==0)
{
// int f=1;
if(a[0]=='.')//第一位就是小数点
{
for(i=k1; i<=k3; i++)
{
printf("%c",a[i]);
if(i==k1&&k1!=k3)
printf(".");
}
printf("E%d\n",k2-k1);
}
else//没有小数点;
{
for(i=k1; i<=k3; i++)
{
printf("%c",a[i]);
if(i==k1&&k1!=k3)
printf(".");
}
if(k1==k3)
{
printf("\n");
continue;
}
else
printf("E%d\n",len-k1-1);
}
}
else
{
if(k2<k1)
{
for(i=k1; i<=k3; i++)
{
printf("%c",a[i]);
if(i==k1&&k1!=k3)
printf(".");
}
printf("E%d\n",k2-k1);
}
else if(k2>=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;
}

这个代码看起来貌似没有上一题那么复杂,主要是思维思路要清晰,找好方法,一遍A;

下面就这两题说说我的感想吧:

就在昨天,我悟出了一个很重要又很平凡的方法。就是:做题,千万要想好思路再去写,思路清晰了代码自然很快就出来了,可是思维很混乱脑袋模模糊糊或者有一点想法就着手写,写出来是运气,写不出来(卡壳)是正常,就是这样不知道浪费了多少时间;一个题,静下心来做不会发很多时间(个人认为),可是往往大部分时间就是心浮气躁,往往一卡壳就又得停下来分析,最后发现思路错了,等于一直在做无用功,题没做出来时间又过去了,效率低下!!

CF-697B Barnicle与691C Exponential notation的更多相关文章

  1. Codeforces 691C. Exponential notation 模拟题

    C. Exponential notation time limit per test: 2 seconds memory limit per test:256 megabytes input: st ...

  2. 【模拟】Codeforces 691C Exponential notation

    题目链接: http://codeforces.com/problemset/problem/691/C 题目大意: 输入一个数,把它表示成a·10b形式(aEb).输出aEb,1<=a< ...

  3. Codeforces 691C. Exponential notation

    题目链接:http://codeforces.com/problemset/problem/691/C 题意: 给你一个浮点数,让你把这个数转化为 aEb 的形式,含义为 a * 10b, 其中 a ...

  4. codeforces 691C C. Exponential notation(科学计数法)

    题目链接: C. Exponential notation time limit per test 2 seconds memory limit per test 256 megabytes inpu ...

  5. Exponential notation

    Exponential notation You are given a positive decimal number x. Your task is to convert it to the &q ...

  6. Educational Codeforces Round 14 C. Exponential notation 数字转科学计数法

    C. Exponential notation 题目连接: http://www.codeforces.com/contest/691/problem/C Description You are gi ...

  7. codeforces 697B Barnicle

    题目链接:http://codeforces.com/problemset/problem/697/B 题目大意: 将科学计数法用十进制表示.[如果类似于7.0应输出7] 解题思路: Java 中 B ...

  8. CodeForces 697B Barnicle 模拟

    强行模拟 纪念一下…… #include<stdio.h> #include<iostream> #include<algorithm> #include<m ...

  9. D3中动画(transition函数)的使用

    关于transition的几个基本点: 1. transition()是针对与每个DOM element的,每个DOM element的transition并不会影响其他DOM element的tra ...

随机推荐

  1. 图论/位运算 Codeforces Round #285 (Div. 2) C. Misha and Forest

    题目传送门 /* 题意:给出无向无环图,每一个点的度数和相邻点的异或和(a^b^c^....) 图论/位运算:其实这题很简单.类似拓扑排序,先把度数为1的先入对,每一次少一个度数 关键在于更新异或和, ...

  2. 438 Find All Anagrams in a String 找出字符串中所有的变位词

    详见:https://leetcode.com/problems/find-all-anagrams-in-a-string/description/ C++: class Solution { pu ...

  3. Kali linux 2016.2(Rolling) 的详细安装(图文教程)附安装VMare Tools 增强工具

    写在前面的话 因读研期间,实验室团队需要,所以,接触上了Kali Linux,需去获得网络安全方面的数据,即数据和信息收集.以便为后续的数据处理和分析,准备! 用到hadoop和spark.机器学习等 ...

  4. .NET通过字典给类赋值

    /// <summary> /// /// </summary> /// <typeparam name="T"></typeparam& ...

  5. WPF学习07:MVVM 预备知识之数据绑定

    MVVM是一种模式,而WPF的数据绑定机制是一种WPF内建的功能集,两者是不相关的. 但是,借助WPF各种内建功能集,如数据绑定.命令.数据模板,我们可以高效的在WPF上实现MVVM.因此,我们需要对 ...

  6. iOS Programming Auto Layout: Programmatic Constraints 自动布局:通过编程限制

    iOS Programming  Auto Layout: Programmatic Constraints  1.  However, if your views are created in co ...

  7. Android下多彩的StatusView的实现

    概述 在上一个博文 Anroid沉浸式状态栏中提到了,画了一个图,这个图简单将我们的状态栏分为不同的2个维度来看状态栏.其中涉及的概念我不在赘诉,请返到Anroid沉浸式状态栏再去认识下这几个概念.本 ...

  8. matlab化简符号表达式

    化简符号表达式计算机毕竟还是挺笨的, 经过一系列的符号计算后, 得到的结果可能只有它自己才能看懂, Matlab提供大量函数以用于符号表达式的化简. collect(f): 函数用途是合并多项式中相同 ...

  9. 迅为7寸Android嵌入式安卓触摸屏,工业一体机方案

    嵌入式安卓触摸屏板卡介绍-工业级核心板: 嵌入式安卓触摸屏功能接口介绍: 品质保障: 核心板连接器:进口连接器,牢固耐用,国产连接器无法比拟(为保证用户自行设计的产品品质,购买核心板用户可免费赠送底板 ...

  10. python的logging的简单使用

    用Python写代码的时候,在想看的地方写个print xx 就能在控制台上显示打印信息,这样子就能知道它是什么了,但是当我需要看大量的地方或者在一个文件中查看的时候,这时候print就不大方便了,所 ...