1019 数字黑洞

简介: 1019 数字黑洞

部分正确。 测试点2,3错误。

反复找不到原因,后来和别人的对比了一下,N不用字符串,直接当成整数处理。

//1019数字黑洞
 
#include<iostream>
#include<string>
#include<stdio.h>
#include<algorithm>
using namespace std;
int main()
{
  string N;
  cin >> N;
  int a[4];
  int x = 0, y = 0;
  int result = -1;
  for (int i = 0; i < N.length(); i++) {
    a[i] = N[i] - '0';
  }
 
  while (result != 6174 && result !=0) {
    sort(a, a+4);
    y = (a[0] * 1000 + a[1] * 100 + a[2] * 10 + a[3]);
    x = (a[3] * 1000 + a[2] * 100 + a[1] * 10 + a[0]);
    result = x - y;
    printf("%04d - %04d = %04d\n",x,y,result);
    a[0] = result / 1000;
    a[1] = (result / 100) % 10;
    a[2] = (result / 10) % 10;
    a[3] = result % 10;
  }
  return 0;
}
 

后来改了一下,(N不用字符串,直接当成整数处理)。测试通过。

#include<stdio.h>
#include<algorithm>
int splitN(int N, int*a) {
  a[0] = N / 1000;
  a[1] = (N / 100) % 10;
  a[2] = (N / 10) % 10;
  a[3] = N % 10;
}
int main()
{
  int  N;
  scanf("%d",&N);
  int a[4];
  int x = 0, y = 0;
  int result = -1;
  splitN(N, a);
  do {
    std::sort(a, a + 4);
    y = (a[0] * 1000 + a[1] * 100 + a[2] * 10 + a[3]);
    x = (a[3] * 1000 + a[2] * 100 + a[1] * 10 + a[0]);
    result = x - y;
    printf("%04d - %04d = %04d\n", x, y, result);
    splitN(result, a);
  } while (result != 6174 && result != 0);
  return 0;
}
 
相关文章
|
4月前
|
C++
“拨”出数位上的数字 - 多种思路实现反向输出一个四位数(二)
```markdown 编写函数,统计正整数中零的个数和最大数字。例如:1080有2个零,最大数字是8。主函数负责输入正整数。解题思路:通过循环取数,逐位检查,更新零的计数器和最大数字。示例代码使用C++实现,通过传址调用来改变主函数中的值。注意,循环遍历数位体现了对每个数位的处理思想。 ```
53 0
|
4月前
|
网络架构
Day34——K次取反后最大化的数组和、加油站、分发糖果
Day34——K次取反后最大化的数组和、加油站、分发糖果
83 0
【c++】寻找四位数的 “数字黑洞”
“数学黑洞”: 任意一个4位自然数,将组成该数的各位数字重新排列,形成一个最大数和一个最小数,之后两数相减,其差仍为一个自然数。重复进行上述运算,会发现一个神秘的数。
|
机器学习/深度学习 C++
1019 数字黑洞 (20 分)(C++)
给定任一个各位数字不完全相同的 4 位正整数,如果我们先把 4 个数字按非递增排序,再按非递减排序,然后用第 1 个数字减第 2 个数字,将得到一个新的数字。一直重复这样做,我们很快会停在有“数字黑洞”之称的 6174,这个神奇的数字也叫 Kaprekar 常数。
313 0
1019 数字黑洞 (20 分)(C++)
LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件
此次探测结果是LIGO和Virgo第一次以自动、即时公开的方式探测到的。
371 0
|
算法 机器学习/深度学习
算法学习之路|数字黑洞
给定任一个各位数字不完全相同的4位正整数,如果我们先把4个数字按非递增排序,再按非递减排序,然后用第1个数字减第2个数字,将得到一个新的数字。一直重复这样做,我们很快会停在有“数字黑洞”之称的6174,这个神奇的数字也叫Kaprekar常数。
1212 0
|
算法 网络架构 芯片
|
算法 索引 机器学习/深度学习