| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 480 人关注过本帖
标题:四位正整数
只看楼主 加入收藏
风卷浪起
Rank: 3Rank: 3
来 自:universe
等 级:论坛游侠
威 望:4
帖 子:188
专家分:149
注 册:2021-11-13
结帖率:77.78%
收藏
已结贴  问题点数:10 回复次数:7 
四位正整数
大佬们好,我又来问问题了

H. 四位正整数

内存限制:128 MiB

时间限制:1000 ms

标准输入输出

题目类型:传统

评测方式:文本比较

题目描述

任意一个四位正整数(4位数字相同者除外), 将各位数字组成一个最大数和最小数,两数相减并重复这一过程必得6174。



输入格式

输入一个四位正整数。



输出格式

输出文件包含多行, 组成一个最大数和一个最小数就输出一行,直到结果为6174。



样例

样例输入

4123

样例输出

4321-1234=3087

8730-378=8352

8532-2358=6174

国庆作业,救急!
搜索更多相关主题的帖子: 输入 输出 正整数 位数 小数 
2023-09-29 18:10
风卷浪起
Rank: 3Rank: 3
来 自:universe
等 级:论坛游侠
威 望:4
帖 子:188
专家分:149
注 册:2021-11-13
收藏
得分:0 
想了很久,没有思路

[此贴子已经被作者于2023-9-29 19:24编辑过]


人生苦短,我用Python~~~
对Pygame相关内容有兴趣,求带。
2023-09-29 18:12
风卷浪起
Rank: 3Rank: 3
来 自:universe
等 级:论坛游侠
威 望:4
帖 子:188
专家分:149
注 册:2021-11-13
收藏
得分:0 
再附一道
I. 乘积根
内存限制:128 MiB
时间限制:1000 ms
标准输入输出
题目类型:传统
评测方式:文本比较
题目描述
求数字的乘积根。正整数的数字乘积这样规定:这个正整数中非零数字的乘积。例如整数999的数字乘积为999,得到729;729的数字乘积为729,得到126;126的数字乘积为126,得到12;12从数字乘积为1*2,得到2。如此反复取数字的乘积,直至得到一位数字为止。999的数字乘积根是2。编程输入一个长度不超过18位数字的正整数,输出计算数字乘积根的每一步结果。

输入格式
一个整数

输出格式
输出积根计算结果

样例
输入
3486784401
输出
3486784401
516096
1620
12
2

人生苦短,我用Python~~~
对Pygame相关内容有兴趣,求带。
2023-09-29 19:25
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:10 
回复 楼主 风卷浪起
程序代码:
#include <stdio.h>

void swap_if_greater( unsigned* x, unsigned* y )
{
    if( *x > *y )
    {
        unsigned tp = *x;
        *x = *y;
        *y = tp;
    }
}

unsigned foo( unsigned n )
{
    unsigned a = n/1000%10;
    unsigned b = n/100%10;
    unsigned c = n/10%10;
    unsigned d = n/1%10;

    swap_if_greater( &a, &b );
    swap_if_greater( &b, &c );
    swap_if_greater( &c, &d );

    swap_if_greater( &a, &b );
    swap_if_greater( &b, &c );

    swap_if_greater( &a, &b );

    unsigned p = a*1 + b*10 + c*100 + d*1000;
    unsigned q = a*1000 + b*100 + c*10 + d*1;
    printf( "%u-%u=%u\n", q, p, p-q );
    return p-q;
}

int main( void )
{
    unsigned n;
    scanf( "%u", &n );

    for( ; n=foo(n), n!=6174; );
}

2023-09-29 22:41
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:0 
回复 3楼 风卷浪起
程序代码:
#include <stdio.h>

unsigned foo( unsigned n )
{
    unsigned result = 1;
    for( ; n!=0; n/=10 )
    {
        if( n%10 != 0 )
            result *= n%10;
    }
    return result;
}

int main( void )
{
    unsigned n;
    scanf( "%u", &n );

    printf( "%u\n", n );
    for( ; n>9; )
    {
        n = foo(n);
        printf( "%u\n", n );
    }
}
2023-09-29 22:42
风卷浪起
Rank: 3Rank: 3
来 自:universe
等 级:论坛游侠
威 望:4
帖 子:188
专家分:149
注 册:2021-11-13
收藏
得分:0 
谢谢!

人生苦短,我用Python~~~
对Pygame相关内容有兴趣,求带。
2023-09-30 15:16
风卷浪起
Rank: 3Rank: 3
来 自:universe
等 级:论坛游侠
威 望:4
帖 子:188
专家分:149
注 册:2021-11-13
收藏
得分:0 
我终于做出了第一道!
#include <bits/stdc++.h>
using namespace std;
int biggest_number_4(int n)
{
    int a[4], i = 0;
    while (n != 0)
    {
        a[i] = n % 10;
        n /= 10;
        i ++;
    }
    for (int i = 0; i < 3; i ++)
    {
        for (int j = 0; j < 3; j ++)
        {
            if (a[j] < a[j+1])
            {
                int temp = a[j];
                a[j] = a[j+1];
                a[j+1] = temp;
            }
        }
    }
    return 1000 * a[0] + 100 * a[1] + 10 * a[2] + a[3];
}
int smallest_number_4(int n)
{
    int a[4], i = 0;
    while (n != 0)
    {
        a[i] = n % 10;
        n /= 10;
        i ++;
    }
    for (int i = 0; i < 3; i ++)
    {
        for (int j = 0; j < 3; j ++)
        {
            if (a[j] > a[j+1])
            {
                int temp = a[j];
                a[j] = a[j+1];
                a[j+1] = temp;
            }
        }
    }
    return 1000 * a[0] + 100 * a[1] + 10 * a[2] + a[3];
}
int main()
{
    int n, num, k;
    cin >> n;
    k = n;
    while (num != 6174)
    {
        num = biggest_number_4(k) - smallest_number_4(k);
        cout << biggest_number_4(k) << "-" << smallest_number_4(k) << "=" << num << endl;
        if (num == 6174)
        {
            break;
        }
        k = num;
    }
}

人生苦短,我用Python~~~
对Pygame相关内容有兴趣,求带。
2023-10-01 22:14
风卷浪起
Rank: 3Rank: 3
来 自:universe
等 级:论坛游侠
威 望:4
帖 子:188
专家分:149
注 册:2021-11-13
收藏
得分:0 
回复 5楼 rjsp
第二题为什么这么写不能得满分?试了好几个数都是对的
#include <bits/stdc++.h>
using namespace std;
int cjg(unsigned long long n) //范围是18446744073709551615
{
    unsigned long long sum = 1;
    while (n != 0)
    {
        if (n % 10 != 0)
        {
            sum *= n % 10;
        }
        n /= 10;
    }
    return sum;
}
int main()
{
    unsigned long long n;
    cin >> n;
    cout << n << endl;
    while (n >= 10)
    {
        n = cjg(n);
        cout << n << endl;
    }   
}

[此贴子已经被作者于2023-10-1 22:39编辑过]


人生苦短,我用Python~~~
对Pygame相关内容有兴趣,求带。
2023-10-01 22:28
快速回复:四位正整数
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.034674 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved