PAT 乙级 1010
题目
题目地址:PAT 乙级 1010
思路
首先一个问题就是审题不清,导致代码返工了很多次,最后还没写对;
其次对于这道题来说每次输入一组数据之后就可以输出结果,太过机械地想要套用题目给出的输出样例,把简单的代码复杂化了;
最后注意“零多项式”的指数和系数都是0,但是表示为“0 0”这个问题。
代码
#include <iostream>
using namespace std; int main() {
int x = , y = ;
bool flag = false;
while (cin >> x >> y) {
if (x * y) {
if (flag)
cout << ' ';
else
flag = true;
cout << x * y << ' ' << y - ;
}
}
if (!flag)
cout << "0 0"; return ;
}
这段代码思路的巧妙之处就在于使用了一个标记变量flag,有两点优势:1. 在代码构造过程中自然解决了题设中给出的输出格式的问题,将每一组输出之间的空格放在了”本次输出“之前,利用标记变量解决了第一组输出之前没有空格的问题;2. 无需其它的操作就可以解决零多项式输出的问题;
下面来简单分析一下这段代码的思路,设置标记变量初值为false,输入第一组数据,若两者的乘积非零,进入操作,否则等待下一次输入;
非零:对于第一组输入数据,因flag为false,则将flag置为true,输出第一组的结果;第二组输入,因flag为true,先输出一个空格,之后输出第二组的结果;第三组……
为零:当之前存在输出,当前数据是常数项的一组,不进入while中的if结构,又因为这是最后一组输入,因此跳出循环,又不满足输出”0 0“的条件,因此结束程序,输出完毕;
当输入本身就是零多项式,因为不满足while中的if条件,且这是唯一的输入,因此跳出循环,又因为flag仍然是初值false,所以满足输出”0 0“的条件,程序结束,输出完毕。
初版代码
#include <iostream>
#include <vector>
using namespace std; int main() {
vector<int> num;
while (true) {
int tmp = ;
cin >> tmp;
num.push_back(tmp);
if (getchar() == '\n')
break;
}
num.pop_back();
int tmp = num[num.size() - ];
if (tmp == )
cout << << ' ' << ;
else {
num.pop_back();
vector<int>::iterator it;
for (it = num.begin(); it != num.end();) {
if (*it == ) {
it = num.erase(it);
it = num.erase(it);
}
else
++it;
}
bool flag = true;
for (int i = ; i < num.size(); i++) {
if (flag) {
cout << num[i] * num[i + ];
flag = false;
}
else {
cout << num[i] - ;
flag = true;
}
if (i != num.size() - )
cout << ' ';
}
cout << endl;
}
return ;
}
这段代码在测试中并未通过,但因为是初版代码,所以贴在这里供以后参考。
PAT 乙级 1010的更多相关文章
- PAT乙级 1010. 一元多项式求导 (25)
1010. 一元多项式求导 (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 设计函数求一元多项式的导数.(注:xn(n为整数)的一 ...
- [C++]PAT乙级1010. 一元多项式求导 (25/25)
/* 1010. 一元多项式求导 (25) 设计函数求一元多项式的导数.(注:x^n(n为整数)的一阶导数为n*x^n-1.) 输入格式: 以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过1 ...
- PAT 乙级 1010 一元多项式求导 (25) C++版
1010. 一元多项式求导 (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 设计函数求一元多项式的导数.(注:xn(n为整数)的一 ...
- PAT乙级1010
1010 一元多项式求导 (25 分) 设计函数求一元多项式的导数.(注:xn(n为整数)的一阶导数为nxn−1.) 输入格式: 以指数递降方式输入多项式非零项系数和指数(绝对值均为不 ...
- PAT 乙级 1010.一元多项式求导 C++/Java
设计函数求一元多项式的导数.(注:xn(n为整数)的一阶导数为nxn−1.) 输入格式: 以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过 1000 的整数).数字间以空格分隔. ...
- PAT 乙级 -- 1010 -- 一元多项式求导
题目简述 设计函数求一元多项式的导数.(注:xn(n为整数)的一阶导数为n*xn-1.) 输入格式:以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过1000的整数).数字间以空格分隔. 输出 ...
- C#版 - PAT乙级(Basic Level)真题 之 1021.个位数统计 - 题解
版权声明: 本文为博主Bravo Yeung(知乎UserName同名)的原创文章,欲转载请先私信获博主允许,转载时请附上网址 http://blog.csdn.net/lzuacm. C#版 - P ...
- PAT乙级真题及训练题 1025. 反转链表 (25)
PAT乙级真题及训练题 1025. 反转链表 (25) 感觉几个世纪没打代码了,真是坏习惯,调了两小时把反转链表调出来了,心情舒畅. 这道题的步骤 数据输入,数组纪录下一结点及储存值 创建链表并储存上 ...
- PAT甲级1010. Radix
PAT甲级1010. Radix (25) 题意: 给定一对正整数,例如6和110,这个等式6 = 110可以是真的吗?答案是"是",如果6是十进制数,110是二进制数. 现在对于 ...
随机推荐
- 机智云连接ESP8266--远程控制点亮RGB灯
概述 智能灯,是一个简单常见的智能产品,硬件电路简单,程序本身也不复杂:下面我们使用esp8266开发板和机智云云端,实现如何将一个传统的灯泡,改造成可以远程控制开关的智能灯. 1.准备工作 硬件: ...
- bzoj1130:[POI2008]POD Subdivision of Kingdom
传送门 看到数据范围这么小,不由得算了一下暴力复杂度,算出来情况一共只有1e7,不多,再乘上暴力判断的复杂度,好像T了,判断的话位运算可以方便解决 但是我写的优化似乎比较渣,还留了个log,但是还是n ...
- django (一) 环境的配置及Django文件简介
1, 创建虚拟环境(virtualenv 和virtualenvwrapper) 1.1, virtualenv的概述 virtualenv是用来创建Python的虚拟环境的库,虚拟环境能够独立于真实 ...
- wmq的队伍 BIT优化dp
http://oj.xjtuacm.com/problem/14/ wmq的队伍 发布时间: 2017年4月9日 17:06 最后更新: 2017年4月9日 17:07 时间限制: 2000m ...
- 修复Windows XP服务扩展视图显示空白
在服务管理控制台(Services.msc)扩展视图显示服务的描述,也有启动或停止服务的链接.在某些系统中,扩展视图可能出现一片空白,如图所示: 这是因为没有注册 JScript.dll文件,要解决此 ...
- bootstrap-table 基础用法
1.需要添加的引用. <script src="@Url.Content("~/js/jquery-2.1.1.js")"></script& ...
- AJPFX关于单例设计模式
单例设计模式优势:保证一个类在内存中的对象唯一性. 比如:多程序读取一个配置文件时,建议配置文件封装成对象.会方便操作其中数据,又要保证多个程序读到的是同一个配置文件对象,就需要该配置文件对象在内存中 ...
- ES-windos环境搭建(3)-kibana
简介 Kibana是一个为ElasticSearch 提供的数据分析的 Web 接口.可使用它对日志进行高效的搜索.可视化.分析等各种操作. 下载 打开elasticseach官网,单击downloa ...
- Vue实例的4个常用选项
1.过滤器 filters:在不改变的data的情况下输出前端页面需要的格式数据.例如将小数过滤为整数等.filters是一个对象,里边定义一个function方法,function传入一个参数,fu ...
- MFC命令行及CCommandLineInfo类
获取命令行的方法: 1.GetCommandLine() 获取输入的所有信息,包括程序所在路径及参数 2.AfxGetApp()->m_lpCmdLine 只包含参数 一般情况下,获取到命令行后 ...