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是二进制数. 现在对于 ...
随机推荐
- Node.js 内置模块fs(文件系统)
fs模块的三个常用方法 1.fs.readFile() -- 读文件 2.fs.writeFile() -- 写文件 3.fa.stat() -- 查看文件信息 fs模块不同于其它模块的地方是它有异步 ...
- element走过的坑
1.想要更改表头颜色,只要在el-table里引入 :header-cell-style="{background:'red'}" 2.el-form自定义表单验证 , 但是左边不 ...
- (十四)SpringBoot开发微信授权支付
前提:配置好域名,在公众号配置 一.引用jar包,在pom.xml文件加入依赖 <dependency> <groupId>com.github.binarywang</ ...
- C 语言实例 - 复数相加
C 语言实例 - 复数相加 C 语言实例 C 语言实例 使用结构体(struct)将两个复数相加. 我们把形如 a+bi(a,b均为实数)的数称为复数,其中 a 称为实部,b 称为虚部,i 称为虚数单 ...
- freertos之队列
任务间信息的传递是通过队列来实现的(单个值.结构体.共享数据指针.),队列是个独立的内核对象,即不属于任何一个任务,每个任务都可以向队列中发送数据和从队列中读数据.对于数据量小的场合通常队列是通过字节 ...
- POJ 1458 Common Subsequence DP
http://poj.org/problem?id=1458 用dp[i][j]表示处理到第1个字符的第i个,第二个字符的第j个时的最长LCS. 1.如果str[i] == sub[j],那么LCS长 ...
- Redis特点
内存存储,速度极快. 支持的数据类型多,相比较其他的Nosql. 键:字符串 值的六种数据结构:字符串,列表,散列,集合,有序集合,HyperLogLog 附加功能强大
- springmvc整合elasticsearch
网上大多时关于springboot整合的,也有spring的,但是 坑太多,都没法愉快的玩耍 这篇让我整合成功 https://www.cnblogs.com/sunny1009/articles/7 ...
- 表单辅助函数-form_open()
使用from_open()之前需要装载本辅助函数: $this->load->helper('form'); php===> echo form_open('email/send') ...
- Java中,数值比较大小,以及数值判断相等
Java中,数值比较大小,以及数值判断相等