PAT 1019数字黑洞
来源:互联网 发布:西斯托 fm数据 编辑:程序博客网 时间:2024/05/17 23:51
给定任一个各位数字不完全相同的4位正整数,如果我们先把4个数字按非递增排序,再按非递减排序,然后用第1个数字减第2个数字,将得到一个新的数字。一直重复这样做,我们很快会停在有“数字黑洞”之称的6174,这个神奇的数字也叫Kaprekar常数。
例如,我们从6767开始,将得到
7766 - 6677 = 1089
9810 - 0189 = 9621
9621 - 1269 = 8352
8532 - 2358 = 6174
7641 - 1467 = 6174
... ...
现给定任意4位正整数,请编写程序演示到达黑洞的过程。
输入格式:
输入给出一个(0, 10000)区间内的正整数N。
输出格式:
如果N的4位数字全相等,则在一行内输出“N - N = 0000”;否则将计算的每一步在一行内输出,直到6174作为差出现,输出格式见样例。注意每个数字按4位数格式输出。
输入样例1:6767输出样例1:
7766 - 6677 = 10899810 - 0189 = 96219621 - 1269 = 83528532 - 2358 = 6174输入样例2:
2222输出样例2:
2222 - 2222 = 0000
分析:
注意几点:1.当数字位数低于4位时(输入的数也可能低于4位),应该补充前面的‘0’.
2.测试样例中有6174,所以用do-while语句.
3.在数字和string型数据之间转换,以满足排序和减法.
源代码:
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
string dijian(string s1)//输出一个字符串的递减序列
{ char temp;
for(int i=0;i<4;i++)
for(int j=0;j<3;j++)
if(s1[j]<s1[j+1])
{
temp=s1[j];
s1[j]=s1[j+1];
s1[j+1]=temp;
}
return s1;
}
string dizeng(string s1)//输出一个字符串的递增序列
{
char temp;
for(int i=0;i<4;i++)
for(int j=0;j<3;j++)
if(s1[j]>s1[j+1])
{
temp=s1[j];
s1[j]=s1[j+1];
s1[j+1]=temp;
}
return s1;
}
int tonum(string s)//将字符串转为int型
{
int num=0;
for(int i=0;i<4;i++)
num=num*10+s[i]-'0';
return num;
}
string tostr(int n)//将int型转为字符串
{ int temp;int sum=0;string s;
while(n!=0)
{
temp=n%10;
n=n/10;
sum++;
s=(char)(temp+'0')+s;
}
for(int i=0;i<4-sum;i++)
s="0"+s;
return s;
}
int main()
{
int n;cin>>n;string s1,s2,s;int temp;
s=tostr(n);
if(s[0]==s[1]&&s[1]==s[2]&&s[2]==s[3])
{
cout<<s<<" - "<<s<<" = 0000"<<endl;
return 0;
}
do{
s1=dijian(s);
s2=dizeng(s);
temp=tonum(s1)-tonum(s2);
s=tostr(temp);
cout<<s1<<" - "<<s2<<" = "<<s<<endl;
}while(s!="6174");
return 0;
}
- PAT 1019 数字黑洞
- PAT 1019数字黑洞
- PAT 1019 数字黑洞
- PAT 1019数字黑洞
- PAT basic 1019 : 数字黑洞
- ZJU PAT 1019 数字黑洞
- PAT BASIC 1019 数字黑洞
- PAT乙级1019 数字黑洞
- pat—1019数字黑洞
- PAT 乙级 1019 数字黑洞 (20)
- 【PAT乙级题目1019】数字黑洞
- PAT——1019数字黑洞
- PAT 1019. 数字黑洞
- PAT 1019. 数字黑洞
- PAT-数字黑洞
- PAT 数字黑洞
- PAT练习-数字黑洞
- PAT B1019. 数字黑洞
- OC语言学习10-NSFileManager类的应用
- hdu1394(求逆序数)
- 局域网访问MySql
- (卡特兰数)Train Problem II --HDOJ
- mysql死锁的简单解决
- PAT 1019数字黑洞
- 欢迎使用CSDN-markdown编辑器
- linux内核中request_region()函数详解
- java服务端获得客户端IP和MAC
- HTML5(3)__H5基本语法(上)
- 合并n个已排序的链表
- Golang 解决"no buildable Go source file in"问题
- VS编译时output/Errorlist窗口自动弹出设置
- 抓取豆瓣某本书的评论