亲密数对递归求逆
Posted 52dxer
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了亲密数对递归求逆相关的知识,希望对你有一定的参考价值。
/* * @Issue: 亲密数对问题:从键盘输入正整数 M 和 N(M<N),输出 M 和 N 之间所有的亲密数对。 亲密数对的定义如下:两个正整数 x 和 y,若 x 的所有因子之和(不包括 x 本身)等于 y, 并且 y 的所有因子之和(不包括 y 本身)等于 x,则 x 和 y 为亲密数对。 * @Author: 一届书生 * @LastEditTime: 2020-02-21 10:04:41 */ #include<iostream> using namespace std; #define maxn 10000 int getSum(int n){ int cnt=1; for(int i=2;i<=n/2;i++){ if(n%i==0){ cnt+=n/i; } } return cnt; } int main(){ int qin[maxn]; int m,n; while(cin>>m>>n){ for(int i=m;i<=n;i++){ qin[i]=getSum(i); } // for(int i=m;i<=n;i++){ // cout<<qin[i]<<" "; // } for(int j=m;j<=n;j++){ if(j==qin[qin[j]]&&qin[j]!=1){ //别判断错了,是j和qin[qin[j]]判等 cout<<qin[j]<<" "<<qin[qin[j]]<<endl; qin[qin[j]]=0; } } } return 0; }
/* * @Issue: 从键盘输入一个整数 n,输出 n 的逆,如输入 12345,输出 54321,请尽量设计递归函数实现。 * @Author: 一届书生 * @LastEditTime: 2020-02-21 10:20:40 */ #include<iostream> using namespace std; void reverse(int n){ cout<<n%10; n/=10; if(n>0)reverse(n); } int main(){ int n; while(cin>>n){ reverse(n); } return 0; }
以上是关于亲密数对递归求逆的主要内容,如果未能解决你的问题,请参考以下文章