【入门】数组练习:验证下面结论 【数组】
来源:互联网 发布:通达信 kdj源码 编辑:程序博客网 时间:2024/05/14 02:01
题目描述
Description
验证下面结论: 一个各位数字不同且都不为0的N位数X(3<=N<=5), 将组成该数的各位数字重新排列成一个最大数和一个最小数作减法, 其差值再重复前述运算,
若干次后必出现一个N位数Y, 使之重复出现. 例如: X=213, 则有213→321-123=198
981-189=792
982-289=693
963-369=594
954-459=495
954-459=495
这时Y=954. (注意:重复不仅仅是与上一次的数相同,也可能是出现成段的多个数反复重复)
输入
一个数X
输出
相减几次后开始重复出现。
样例输入
213
样例输出
5
提示
解释:
输入:1234
4321-1234=3087
8730- 378 =8352
8532- 2358= 6174
7641 -1467= 6174
所以减3次后开始循环。
输出应为3次
#include <iostream>#include <cmath>using namespace std;void splite(int num,int& maxNum,int& minNum){int n=0,a[5]={0},i,j,t;while(num>0){a[n++]=num%10;num/=10;}for(i=0;i<n-1;i++){for(j=n-1;j>i;j--){if(a[j]<a[j-1]){t=a[j];a[j]=a[j-1];a[j-1]=t;}}}maxNum=0;minNum=0;for(i=0;i<n;++i){maxNum+=a[i]*(int)pow(10.0,i);minNum+=a[i]*(int)pow(10.0,n-i-1);}}int main(){int num,maxNum=0,minNum=0,xMax=0,x,t=0,y=0;cin>>num;splite(num,maxNum,minNum);x=maxNum-minNum;while(y!=x){y=x; splite(x,maxNum,minNum);x=maxNum-minNum;++t;}cout<<t<<endl;return 0;}
0 0
- 【入门】数组练习:验证下面结论 【数组】
- 后缀数组入门练习
- 【结论】树状数组
- 【冒泡排序】树状数组 & 结论
- 数组练习
- 数组 练习
- 数组练习
- 数组练习
- 练习,数组
- 数组练习
- 数组练习
- 数组练习
- 数组练习
- 数组练习
- 数组练习
- 数组练习
- C++指针、数组、字符串结论杂记
- 【BZOJ4378】[POI2015]Logistyka【树状数组】【结论题】
- 网络文档归档
- python中安装 django web.py gearman等各种包的安装和卸载方法总结
- Android OpenGL详解(2)
- 欢迎使用CSDN-markdown编辑器
- iBeacon工作原理(How do iBeacon work?)
- 【入门】数组练习:验证下面结论 【数组】
- xcode6 如何编译64位iOS应用
- 表达式求值
- Intersection of Two Linked Lists
- CodeForces 388A Fox and Box Accumulation(贪心)
- SerialPortManager总结
- Mayor's posters(线段树区间更新+离散化)
- Perl 域名转换为IP
- Eclipse MyEclipse 使用 复制粘贴 卡、缓慢的解决办法