《编程之美》4.10数字哑谜和回文
2014-09-08 16:57
204 查看
第一题:找出符合条件的九位数,每位数互不相同(1~9的某个排列),满足高n位能被n整除。例如abcdefghi,高两位ab能被2整除,高三位abc能被3整除,以此类推。
相对简单的一种解法
第二题:人过大佛寺*我=寺佛大过人
code
相对简单的一种解法
#include "stdafx.h" #include <iostream> using namespace std; void findNum(bool* used,int index,long sum) { if(index !=0 && sum%index != 0) { return; } else { if(index==9) { cout<<"The number is "<<sum<<" ."<<endl; return; } } for(int i=1;i<=9;i++) { if(used[i]==false) { used[i]=true; findNum(used,index+1,sum*10+i); used[i]=false; } } return; } int main() { bool used[10]={false}; int index=0; long sum=0; findNum(used,index,sum); system("pause"); return 0; }
第二题:人过大佛寺*我=寺佛大过人
code
#include "stdafx.h" #include <vector> #include <iostream> using namespace std; int findPalindrome(int sum) { vector<int> s; int temp=sum; while(temp!=0) { int a=temp%10; s.push_back(a); temp=temp/10; } temp=0; vector<int>::iterator it=s.begin(); while(it!=s.end()) { temp=temp*10+*it; it++; } return temp; } void findNum(bool* used,int index,long sum) { if(index==5) { int temp=findPalindrome(sum); for(int i=1;i<=9;i++) { if(used[i]==false) { if(sum*i==temp) { cout<<sum<<" * "<<i<<" = "<<temp<<endl; return; } } } return; } for(int i=1;i<=9;i++) { if(used[i]==false) { used[i]=true; findNum(used,index+1,sum*10+i); used[i]=false; } } return; } int main() { bool used[10]={false}; int index=0; long sum=0; findNum(used,index,sum); system("pause"); return 0; }
相关文章推荐
- 编程之美:第四章 数字之趣 4.10数字哑谜和回文
- 编程之美:第四章 数字之趣 4.10_2数字哑谜和回文
- 读书笔记之编程之美 - 4.10 数字哑谜和回文
- 4.10 数字哑谜和回文
- 《编程之美》 Problem4_10 数字哑谜和回文
- 编程之美-数字哑谜和回文方法整理
- 编程之美——数字哑谜
- 编程之美——数字哑谜
- 数字哑谜和回文
- 编程之美 数字哑谜和回文小程序
- 数字哑谜和回文
- 数字哑谜和回文
- 数字哑谜和回文游戏
- 【蓝桥杯】历届试题 回文数字
- 1503140110-蓝桥杯-历届试题 回文数字
- Palindrome Number(回文数字)
- 利用while循环翻转数字之后,比较翻转后的数字是否与原来的数字相同的方法来判断是不是回文数字
- 回文字符序列(编程之美2015资格赛)
- 2015编程之美资格赛 B 回文字符序列
- 判断一串数字是否回文