回文数列输出,运用stringstream,以及queue
2018-02-02 18:39
169 查看
#include<sstream>stringstream s;s.str()s << <<#include <iostream>#include <queue>#include <sstream>using namespace std;queue<string> que_6;/*问题描述 123321是一个非常特殊的数,它从左边读和从右边读是一样的。 输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n。 输入格式 输入一行,包含一个正整数n。 输出格式 按从小到大的顺序输出满足条件的整数,每个整数占一行。 样例输入 52 样例输出 899998989989998899数据规模和约定 1<=n<=54。*//*首先想想回文的特点,对称,即只看一半即可。分两种情况。5位的和六位的,分别区别处理。想要跑快一点,一次循环处理五位的和六位的。有要求从小到大输出,即可以先把六位先放在queue里,先入先出。带五位的输出完,再打出。*/void deal(int num) {int a, a1, a2, a3, temp = 0;if (num % 2 == 1) {for (int i = 100; i <= 999; i++) {a = i;a1 = a / 100;a = a % 100;a2 = a / 10;a3 = a % 10;/*减少循环次数,用离散数学的角度来解释的话,可以说:这是一个包含的时间(a1 + a2 + a3 > num) >= (a1 + a2 > num) >= (a1 > num)这种情况用嵌套的if判断。而对等的情况是时件互斥的时使用。*/if (a1 + a2 + a3 > num) {if (a1 + a2 > num) {if (a1 > num) {i = 1000;}i = 100 * (a1 + 1);}i = a1 * 100 + (a2 + 1) * 10;}if (a1 * 2 + a2 * 2 + a3 == num) {cout << i << a2 << a1 << endl;}}}else if (num % 2 == 0) {for (int i = 100; i <= 999; i++) {a = i;a1 = a / 100;a = a % 100;a2 = a / 10;a3 = a % 10;if (a1 + a2 + a3 > num) {if (a1 + a2 > num) {if (a1 > num) {i = 1000;}i = 100 * (a1 + 1);}i = a1 * 100 + (a2 + 1) * 10;}if (a1 * 2 + a2 * 2 + a3 == num) {cout << i << a2 << a1 << endl;}if (a1 * 2 + a2 * 2 + a3 * 2 == num) {stringstream s; //注意stringstream用法s << i << a3 << a2 << a1 << endl;que_6.push(s.str());}}while (que_6.empty() == 0) {cout << que_6.front();que_6.pop();}}}int main() {int num;cin >> num;deal(num);system("pause");return 0;}
相关文章推荐
- 题目1442:A sequence of numbers(数列计算以及二分求幂运用)
- 数列的第一项为n,以后各项为前一项的平方根,求数列的前m项的和,对于每组输入数据,输出该数列的和,每个测试实例占一行,要求精度保留2位小数
- LINUX系统以及ANDROID 平台log信息输出级别设置 [MTK]
- Java 学习笔记10:获取POST数据以及简单模板输出
- Java多线程15:Queue、BlockingQueue以及利用BlockingQueue实现生产者/消费者模型
- javascript的介绍,实现和输出以及语法-javascript学习之旅(1)
- 重温c语言 谭浩强 输出魔方阵 目前只做了基数魔方 以及 双偶幻方,单偶同理
- 小案例:物体追随鼠标轨迹移动,关于Queue的运用
- 怎么编程你输进去一个数据 然后输出的会是一组数列 其中前两个数字之和等于第三个数字。例如你输入7, 输出会显示1,2,3,5,8,13,21(每行显示一个数)
- 随机一个数组 用户输入n,则输出比n大的数以及该数在数组中的位置
- 如何从按行读文件&&以及每行中有多少个数据块,并输出每个数据块
- 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序
- 用NLog以及将NLog的记录信息输出到文件
- 栈----判断是否为回文数列
- 第十一周 项目六:输出1000以内的所有回文素数
- 乱序数列按序输出 (4.2阿里C++机试最后一题)()
- 超长数列中的n个整数排序,要求能够把从指定位置m开始的n个数排列成降序,并输出完整的数列
- Hibernate/Mybatis如何输出sql以及参数
- ActiveMQ的queue以及topic两种消息处理机制分析
- .NET 中的MD5及hash加密以及密文输出(C#)