洛谷P1957口算练习题题解
前言:
题目传送门:https://www.luogu.com.cn/problem/P1957
其实这很简单
纯模拟撒~~~~
正文开始:
_话说 ,就当本蒟蒻正高高兴兴的刷水题时,居然
碰到了这个laji题_
于是就开始了一顿乱写:
思路部分:
这道题很大的一个痛点就在于输入
4
a 64 46
275 125 //这里咋就没有字母了呢????
c 11 99
b 46 64
看来,三个cin不行
于是,经过几分钟的思考,
我大致确定了两种方案:
1.直接getline一行:
可是.....这个如何转换为数字的问题吗,还是去问前排一波的Ak大佬吧(逃)
2.其他办法:
先cin一个char类型的呗,至于那种毒瘤情况待会再解决
于是代码:
cin>>y;
if(y>='a'&&y<='c'){
w=y;
cin>>s1;
}
cin>>s2;
补充小知识:char可是只会读入一个的oh
于是当275 125 这种数据出现的时候,y,s1,s2会变成这样:
y=‘2’;
s2=75;
s3=125;
好了,于是一种想法就理所应当的产生了:吧y变为数字,再与s2拼起来不就得了?
于是:
char y;long long s1,s2;
cin>>y>>s1>>s2;
s1=(y-'0')*pow(10,line(s1))+s1;
cout<<s1;
return 0;
其中有一句line(s1)是读取s1有几位的函数(当然要自己写啦)
long long line(long long i){
long long j=0,k=i;
if(i<=0){
k=-k;
j++;
}
while(k>0){
k=k/10;
j++;
}
return j;
}
很简单,一个模板而已;
可是,你难道没发现什么bug:当如测试点2的5002时会:变为52!!!!!!!
哪儿有问题呢?
原来,当程序读入5002时灰度为‘5’;002->2!!
所以,另辟新路吧!
仔细想想,原来可以这样!!
可把后面的s1用字符串读入
然后与y一拼,一起化为数字:
cin>>e;
e=y+e;
int le=e.size();int kw=1;int ss=0;
for(int i=le-1;i>=0;i--){
ss+=(kw*(e[i]-'0'));
kw=kw*10;
}
s1=ss;
于是,只需要再注意一些细节问题便好:
int main(){
long long n; cin>>n;
for(long long i=1;i<=n;++i){
getzf();
//cout<<"s1:"<<s1<<" "<<s2<<endl;
if(w=='a'){
cout<<s1<<"+"<<s2<<"="<<s1+s2<<endl;
cout<<line(s1)+2+line(s2)+line(s1+s2)<<endl;
}
else if(w=='b'){
cout<<s1<<"-"<<s2<<"="<<s1-s2<<endl;
cout<<line(s1)+2+line(s2)+line(s1-s2)<<endl;
//cout<<"line:"<<line(s1)<<" "<<line(s2)<<" "<<line(s1-s2)<<endl;
}
else if(w=='c'){
cout<<s1<<"*"<<s2<<"="<<s1*s2<<endl;
cout<<line(s1)+2+line(s2)+line(s1*s2)<<endl;
}
}
return 0;
}
注意不要多输出换行oh!!!!!
那会爆零的!!!
code,完整代码:
#include<bits/stdc++.h>
using namespace std;
string a,e; long long s1,s2;char w,y;//////////////////////iephyhoyhjyeohyohytuohyoihj/////iihjn
long long line(long long i){
long long j=0,k=i;
if(i<=0){
k=-k;
j++;
}
while(k>0){
k=k/10;
j++;
}
return j;
}
void getzf(){
cin>>y;
//cout<<"y:"<<y<<endl;
if(y>='a'&&y<='c'){
w=y;
cin>>s1;
}
else{
cin>>e;
e=y+e;
int le=e.size();int kw=1;int ss=0;
for(int i=le-1;i>=0;i--){
ss+=(kw*(e[i]-'0'));
kw=kw*10;
}
s1=ss;
}
cin>>s2;
//cout<<"s1:"<<s1<<"s2:"<<s2<<endl;
}
int main(){
long long n; cin>>n;
for(long long i=1;i<=n;++i){
getzf();
//cout<<"s1:"<<s1<<" "<<s2<<endl;
if(w=='a'){
cout<<s1<<"+"<<s2<<"="<<s1+s2<<endl;
cout<<line(s1)+2+line(s2)+line(s1+s2)<<endl;
}
else if(w=='b'){
cout<<s1<<"-"<<s2<<"="<<s1-s2<<endl;
cout<<line(s1)+2+line(s2)+line(s1-s2)<<endl;
//cout<<"line:"<<line(s1)<<" "<<line(s2)<<" "<<line(s1-s2)<<endl;
}
else if(w=='c'){
cout<<s1<<"*"<<s2<<"="<<s1*s2<<endl;
cout<<line(s1)+2+line(s2)+line(s1*s2)<<endl;
}
}
return 0;
}
了结!!
总结一下,下次做模拟题需注意:
1.函数化编程!!!!方便调试,方便理解
这才是做较难模拟题的王道!!!!
2.注意细节,避免爆零!!!
极简:将复杂的东西分为小块,像搭积木一样解决各类难题,这也是每个学科创造的大致路径
删繁就简三秋树,标新立异二月花
byebye~~~~!
洛谷P1957口算练习题题解的更多相关文章
- 洛谷 P1957 口算练习题 题解
题目传送门 这道题是考字符串处理,另外输入要使用c++的cin的神奇功能. #include<bits/stdc++.h> using namespace std; int n;char ...
- 洛谷 P1957 口算练习题
洛谷 P1957 口算练习题 题目描述 王老师正在教简单算术运算.细心的王老师收集了i道学生经常做错的口算题,并且想整理编写成一份练习. 编排这些题目是一件繁琐的事情,为此他想用计算机程序来提高工作效 ...
- 洛谷P1720 月落乌啼算钱 题解
题目传送门 初看题目,好难.再看一次,探索规律,发现这就是有名的斐波那契数列. F[i]=f[i-1]+f[i-2] SO 代码很简单,貌似要开long long,又貌似不用开. #include&l ...
- 洛谷P1720 月落乌啼算钱 题解 斐波那契数列/特征方程求解
题目链接:https://www.luogu.com.cn/problem/P1720 题目描述: 给你一个公式 ,求对应的 \(F_n\) . 解题思路: 首先不难想象这是一个斐波那契数列,我们可以 ...
- 洛谷P1783 海滩防御 分析+题解代码
洛谷P1783 海滩防御 分析+题解代码 题目描述: WLP同学最近迷上了一款网络联机对战游戏(终于知道为毛JOHNKRAM每天刷洛谷效率那么低了),但是他却为了这个游戏很苦恼,因为他在海边的造船厂和 ...
- 洛谷P4047 [JSOI2010]部落划分题解
洛谷P4047 [JSOI2010]部落划分题解 题目描述 聪聪研究发现,荒岛野人总是过着群居的生活,但是,并不是整个荒岛上的所有野人都属于同一个部落,野人们总是拉帮结派形成属于自己的部落,不同的部落 ...
- 洛谷P1155 双栈排序题解(图论模型转换+二分图染色+栈)
洛谷P1155 双栈排序题解(图论模型转换+二分图染色+栈) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1311990 原题地址:洛谷P1155 双栈排序 ...
- 2019.06.17课件:[洛谷P1310]表达式的值 题解
P1310 表达式的值 题目描述 给你一个带括号的布尔表达式,其中+表示或操作|,*表示与操作&,先算*再算+.但是待操作的数字(布尔值)不输入. 求能使最终整个式子的值为0的方案数. 题外话 ...
- 洛谷10月月赛II题解
[咻咻咻] (https://www.luogu.org/contestnew/show/11616) 令人窒息的洛谷月赛,即将参加NOIp的我竟然只会一道题(也可以说一道也不会),最终145的我只能 ...
随机推荐
- JAVA SE Lesson 1
1. 类是一种抽象的概念,对象是类的一种具体表示形式,是具体的概念.先有类,然后由类来生成对象(Object).对象又叫做实例(Instance).2. 类由两大部分构成:属性以及方法.属性一般用 ...
- 20190407-ORID
2019-04-07 Objective 关于今天的课程,你记得什么? 给代码建立分支的操作 完成了什么? 完成了rails101前6节 Relective 今天的高峰是什么? 成功完成rails10 ...
- 推荐系统--隐语义模型LFM
主要介绍 隐语义模型 LFM(latent factor model). 隐语义模型最早在文本挖掘领域被提出,用于找到文本的隐含语义,相关名词有 LSI.pLSA.LDA 等.在推荐领域,隐语义模型也 ...
- ES6学习笔记(三):教你用js面向对象思维来实现 tab栏增删改查功能
前两篇文章主要介绍了类和对象.类的继承,如果想了解更多理论请查阅<ES6学习笔记(一):轻松搞懂面向对象编程.类和对象>.<ES6学习笔记(二):教你玩转类的继承和类的对象>, ...
- 彻底消灭if-else嵌套
一.背景 1.1 反面教材 不知大家有没遇到过像横放着的金字塔一样的if-else嵌套: if (true) { if (true) { if (true) { if (true) { if (tru ...
- 设计模式-11享元模式(Flyweight Pattern)
1.模式动机 在面向对象程序设计过程中,有时会面临要创建大量相同或相似对象实例的问题.创建那么多的对象将会耗费很多的系统资源,它是系统性能提高的一个瓶颈. 享元模式就是把相同或相似对象的公共部分提取出 ...
- Java框架之SpringBoot-Web构建-yml-模块-注解
SpringBoot Spring Boot是一站式整合所有应用框架的框架,简化Spring应用开发,约定大于配置,去繁从简,开箱即用,准生产环境的运行时应用监控框架 快速构建 SpringBoot ...
- [面试专题]前端需要知道的web安全知识
前端需要知道的web安全知识 标签(空格分隔): 未分类 安全 [Doc] Crypto (加密) [Doc] TLS/SSL [Doc] HTTPS [Point] XSS [Point] CSRF ...
- npm注册源的配置
npm注册源的更换 在墙内久了,难免会碰到撞墙的时候,所幸国内也有众多 NPM 镜像可供选择,在大多数情况下我们可以使用国内的源(比如 淘宝 NPM 镜像)去替换官方的源以加快下载包的速度.不过呢,我 ...
- Python - loguru日志库,高效输出控制台日志和日志记录
一.安装loguru loguru的PyPI地址为:https://pypi.org/project/loguru/ GitHub仓库地址为:https://github.com/Delgan/log ...