1019 数字黑洞 (20 分)

题目链接:1019 数字黑洞 (20 分)

这道题目:没有太难的地方,但是因为基础不够牢固,很多操作花的时间较长,甚至有些参考网上的方法。

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3
 4 int string_to_int(string str)
 5 {
 6     int num;
 7     stringstream ss;
 8     ss<<str;
 9     ss>>num;
10     return num;
11 }
12
13 string int_to_string(int num)
14 {
15     string str;
16     stringstream ss;
17     ss<<num;
18     ss>>str;
19     return str;
20 }
21
22 int main()
23 {
24     string s;
25     cin>>s;
26     while(1)
27     {
28         for(;s.length()<4;)
29             s+=‘0‘;
30         sort(s.begin(),s.begin()+s.length());
31         int a=string_to_int(s);
32         string s2="";
33         for(int i=s.length()-1;i>=0;i--)
34             s2+=s[i];
35         int b=string_to_int(s2);
36         string s3=int_to_string(b-a);
37         for(;s3.length()<4;)
38             s3.insert(0,"0");
39         cout<<s2<<" - "<<s<<" = "<<s3<<endl;
40         if(b-a==6174||b==a)
41             break;
42         int num=b-a;
43         s=int_to_string(num);
44     }
45     return 0;
46 } 

以后总结一下各种不熟悉的操作

字符串转int

1 string int_to_string(int num)
2 {
3     string str;
4     stringstream ss;
5     ss<<num;
6     ss>>str;
7     return str;
8 }

int转字符串

1 int string_to_int(string str)
2 {
3     int num;
4     stringstream ss;
5     ss<<str;
6     ss>>num;
7     return num;
8 }

原文地址:https://www.cnblogs.com/ManOK/p/10186836.html

时间: 2024-10-07 09:22:13

1019 数字黑洞 (20 分)的相关文章

PAT Basic 1019 数字黑洞 (20 分)

给定任一个各位数字不完全相同的 4 位正整数,如果我们先把 4 个数字按非递增排序,再按非递减排序,然后用第 1 个数字减第 2 个数字,将得到一个新的数字.一直重复这样做,我们很快会停在有“数字黑洞”之称的 6174,这个神奇的数字也叫 Kaprekar 常数. 例如,我们从6767开始,将得到 7766 - 6677 = 1089 9810 - 0189 = 9621 9621 - 1269 = 8352 8532 - 2358 = 6174 7641 - 1467 = 6174 ... .

1019 数字黑洞 (20分)

#include <stdio.h> #include <vector> #include <algorithm> #include <string.h> #include <cmath> #include <stdlib.h> #include <iostream> using namespace std; int main() { int N,h,l,i,j; char num[5],num1[5]; char tmp

PAT乙级 1019. 数字黑洞 (20)

1019. 数字黑洞 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 给定任一个各位数字不完全相同的4位正整数,如果我们先把4个数字按非递增排序,再按非递减排序,然后用第1个数字减第2个数字,将得到一个新的数字.一直重复这样做,我们很快会停在有“数字黑洞”之称的6174,这个神奇的数字也叫Kaprekar常数. 例如,我们从6767开始,将得到 7766 - 6677 = 10899810 - 018

PAT-乙级-1019. 数字黑洞 (20)

1019. 数字黑洞 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 给定任一个各位数字不完全相同的4位正整数,如果我们先把4个数字按非递增排序,再按非递减排序,然后用第1个数字减第2个数字,将得到一个新的数字.一直重复这样做,我们很快会停在有“数字黑洞”之称的6174,这个神奇的数字也叫Kaprekar常数. 例如,我们从6767开始,将得到 7766 - 6677 = 10899810 - 018

1019. 数字黑洞 (20)

时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 给定任一个各位数字不完全相同的4位正整数,如果我们先把4个数字按非递增排序,再按非递减排序,然后用第1个数字减第2个数字,将得到一个新的数字.一直重复这样做,我们很快会停在有"数字黑洞"之称的6174,这个神奇的数字也叫Kaprekar常数. 例如,我们从6767开始,将得到 7766 - 6677 = 10899810 - 0189 = 9621962

PAT 1019. 数字黑洞 (20)

给定任一个各位数字不完全相同的4位正整数,如果我们先把4个数字按非递增排序,再按非递减排序,然后用第1个数字减第2个数字,将得到一个新的数字.一直重复这样做,我们很快会停在有"数字黑洞"之称的6174,这个神奇的数字也叫Kaprekar常数. 例如,我们从6767开始,将得到 7766 - 6677 = 1089 9810 - 0189 = 9621 9621 - 1269 = 8352 8532 - 2358 = 6174 7641 - 1467 = 6174 ... ... 现给定

1019. 数字黑洞 (20) (数学啊 ZJU_PAT)

题目链接:http://www.patest.cn/contests/pat-b-practise/1019 给定任一个各位数字不完全相同的4位正整数,如果我们先把4个数字按非递增排序,再按非递减排序,然后用第1个数字减第2个数字,将得到一个新的数字.一直重复这样做,我们很快会停在有"数字黑洞"之称的6174,这个神奇的数字也叫Kaprekar常数. 例如,我们从6767开始,将得到 7766 - 6677 = 1089 9810 - 0189 = 9621 9621 - 1269 =

PAT:1019. 数字黑洞 (20) AC(同甲级1069)

#include<stdio.h> #include<algorithm> using namespace std; const int AIM=6174; int n; int arr[4]; bool NonIncreasingOrder(int a,int b) { return a>b; } bool NonDecreasingOrder(int a,int b) { return a<b; } int toNum() //得到这个数字 { int sum=0;

PAT 1019. 数字黑洞

1019. 数字黑洞 (20) 给定任一个各位数字不完全相同的4位正整数,如果我们先把4个数字按非递增排序,再按非递减排序,然后用第1个数字减第2个数字,将得到一个新的数字.一直重复这样做,我们很快会停在有"数字黑洞"之称的6174,这个神奇的数字也叫Kaprekar常数. 例如,我们从6767开始,将得到 7766 - 6677 = 10899810 - 0189 = 96219621 - 1269 = 83528532 - 2358 = 61747641 - 1467 = 6174