递推递归-J - 数学黑洞
2017-04-09 19:05
218 查看
题目:
Description
任意一个4位自然数N(N不能是4个数字一样,如1111、2222、….9999是不可以的,N也不能是6174),将组成自然数N的4个数字重新排列,形成一个最大数和最小数,最大数和最小数相减,其差还是自然数,将差的各数字再重新排列,又形成一个最大数和最小数,最大数和最小数相减,其差还是自然数。反复进行,直到差是一个神秘数6174(数学黑洞)结束。
Input
输入数据有多组,每组占一行,每行包含一个4位自然数N。输入文件直到EOF为止!
Output
对每组输入,输出有2行。第一行是所有的差,以空格分隔,最后一个数后也有空格;第二行是差的个数。
Sample Input
Sample Output
解题思路:
先把四位数的每一位都求出来,然后进行排序,然后求出最大数和最小数,相减判断是否符合终止条件,不符合就输出差值以后继续调用。
代码:
#include <bits/stdc++.h>
using namespace std;
int k=0,b[20];
void F(int a)
{ int j,maxx=0,minn=0;
b[0]=a/1000;b[1]=a%1000/100;
b[2]=a%1000%100/10;b[3]=a%10;
sort(b,b+4);
minn=b[0]*1000+b[1]*100+b[2]*10+b[3];
maxx=b[3]*1000+b[2]*100+b[1]*10+b[0];
j=maxx-minn;
cout<<j<<" ";
k++;
if(j!=6174)
{
return F(j);
}
}
int main()
{ int a;
while(cin>>a)
{F(a);
cout<<endl;
cout<<k<<endl;
k=0;}
return 0;
}
回顾:
这道题我第一次写的时侯想写一个可以适用于所有数的代码所以不是按照数字只有四位数来做的,做出来计算结果也对但是就是WR,不知道哪里错了,无奈之下只好按照四位数来做,但是感觉这样写就真的是就题论题了。
Description
任意一个4位自然数N(N不能是4个数字一样,如1111、2222、….9999是不可以的,N也不能是6174),将组成自然数N的4个数字重新排列,形成一个最大数和最小数,最大数和最小数相减,其差还是自然数,将差的各数字再重新排列,又形成一个最大数和最小数,最大数和最小数相减,其差还是自然数。反复进行,直到差是一个神秘数6174(数学黑洞)结束。
Input
输入数据有多组,每组占一行,每行包含一个4位自然数N。输入文件直到EOF为止!
Output
对每组输入,输出有2行。第一行是所有的差,以空格分隔,最后一个数后也有空格;第二行是差的个数。
Sample Input
1000 1500 3000
Sample Output
999 8991 8082 8532 6174 5 5085 7992 7173 6354 3087 8352 6174 7 2997 7173 6354 3087 8352 6174 6
解题思路:
先把四位数的每一位都求出来,然后进行排序,然后求出最大数和最小数,相减判断是否符合终止条件,不符合就输出差值以后继续调用。
代码:
#include <bits/stdc++.h>
using namespace std;
int k=0,b[20];
void F(int a)
{ int j,maxx=0,minn=0;
b[0]=a/1000;b[1]=a%1000/100;
b[2]=a%1000%100/10;b[3]=a%10;
sort(b,b+4);
minn=b[0]*1000+b[1]*100+b[2]*10+b[3];
maxx=b[3]*1000+b[2]*100+b[1]*10+b[0];
j=maxx-minn;
cout<<j<<" ";
k++;
if(j!=6174)
{
return F(j);
}
}
int main()
{ int a;
while(cin>>a)
{F(a);
cout<<endl;
cout<<k<<endl;
k=0;}
return 0;
}
回顾:
这道题我第一次写的时侯想写一个可以适用于所有数的代码所以不是按照数字只有四位数来做的,做出来计算结果也对但是就是WR,不知道哪里错了,无奈之下只好按照四位数来做,但是感觉这样写就真的是就题论题了。
相关文章推荐
- 递归递推练习 J - 数学黑洞
- 递推递归练习 J 数学黑洞
- 递推递归练习J - 数学黑洞
- 递推递归--J - 数学黑洞
- ACM-递归递推练习J-数学黑洞
- 递推递归练习J数学黑洞
- 递推递归练习 J - 数学黑洞
- ACM递推递归练习J 数学黑洞
- 递推递归练习J - 数学黑洞
- 递归递推之数学黑洞
- 递推递归练习--J(数学黑洞)
- 数学黑洞(递归)
- “数学黑洞”——递归
- 数学黑洞 --递归
- 斐波那契,DP,递归,递推,数学归纳
- [BZOJbegin][NOIP十连测第七场]约瑟夫游戏(递推|数学相关|递归)
- 验证数学黑洞 ,用户输入一个四位数,输出变换到6174的过程
- 递推,递归及其优化
- leetcode -- 357. Count Numbers with Unique Digits 【数学表达 + 递推 + 破坏递推的情况的排除+回溯】
- hdu 1165 Eddy's research II(数学题,递推)