<NOIP> 7 . P1008 三连击
2017-06-30 11:52
399 查看
题解:这是洛谷的第8道题目,考察的是循环(while、do while、for)的使用。
解决办法:
1 . 直接暴力,从100至999,作为可能要输出的第一个数;
2 . 第二个数字、第三个数字分别是第一个数字的2、3倍,直接可以生成后两个数字;
3 . 筛选(由于三个数的每一个位上的数字都是不同的,并且这三个数字都是三位数)
源代码:
解决办法:
1 . 直接暴力,从100至999,作为可能要输出的第一个数;
2 . 第二个数字、第三个数字分别是第一个数字的2、3倍,直接可以生成后两个数字;
3 . 筛选(由于三个数的每一个位上的数字都是不同的,并且这三个数字都是三位数)
源代码:
#include <iostream> #include <stdlib.h> using namespace std; bool check(int *first, int *second) { if (first[0] != second[0] && first[0] != second[1] && first[0] != second[2] && first[1] != second[0] && first[1] != second[1] && first[1] != second[2] && first[2] != second[0] && first[2] != second[1] && first[2] != second[2] && first[0]!=first[1] && first[0]!=first[2]&&first[1]!=first[2] && second[0]!= second[1] && second[0]!= second[2] && second[1]!= second[2] && first[1]!=0 && first[2]!=0 && second[1]!=0&&second[2]!=0) return true; else return false; } int main() { for (size_t i = 100; i < 1000; i++) { int a = i * 1; int b = i * 2; int c = i * 3; int d = a; int e = b; int f = c; if (b < 1000 && c < 1000) { // 提取位数; int aArray[3], bArray[3], cArray[3]; for (size_t i = 0; i < 3; i++) { aArray[i] = a % 10; a /= 10; bArray[i] = b % 10; b /= 10; cArray[i] = c % 10; c /= 10; } if (check(aArray, bArray) && check(aArray, cArray) && check(bArray, cArray)) cout << d << " " << e << " " << f << endl; } } system("pause"); return 0; }
相关文章推荐
- <NOIP> 27 . P1618 三连击(升级版)
- <NOIP> 12 . P1980 计数问题
- <二分||线段树>【noip 2012】codevs 1217 借教室
- <NOIP> 13 . P1046 陶陶摘苹果
- <noip>陶陶摘苹果
- <NOIP> 14 . P1047 校门外的树
- <NOIP> 5 . P1085 不高兴的津津
- <NOIP> 15 . P1427 小鱼的数字游戏
- <NOIP> 16 . P1055 ISBN号码
- <NOIP> 4 . P1425 小鱼的游泳时间
- <NOIP> 18 . P1308 统计单词数
- <NOIP> 23 . P1036 选数
- <棋盘型DP> noip 2008 传纸条
- <NOIP> 24 . P1149 火柴棒等式
- <NOIP> 25 . P1217 [USACO1.5]回文质数 Prime Palindromes
- <NOIP> 10 . P1423 小玉在游泳
- <NOIP> 21 . P1914 小书童——密码
- <ZZ>The Sieve of Eratosthees ( 爱拉托逊斯筛选法 数论 筛法 )
- <二>、TensorFlow之MNIST机器学习入门(1)
- ActionScript3.0自定义Flex组件问题 <重写组件的使用>