栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言练习-变种水仙花

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言练习-变种水仙花

一原题

二,解题思路 

写一个双循环

第一个循环确定,10000-99999之间的数字

第二个循环确定,可以拆分的位数

(比如说,第一次拆分34420)

则需要

第一次循环

34420 % 10000(10^4)取得后半部分拆分

34420 /10000(10^4)取得前半部分拆分

二者相乘得第一次积

第二次循环

34420 % 1000(10^3)取得后半部分拆分

34420 /1000(10^3)取得前半部分拆分

二者相乘得第二次积

第三次循环

34420 % 100(10^2)取得后半部分拆分

34420 /100(10^2)取得前半部分拆分

二者相乘得第二次积

.................

最后各次积相加得到sum

判断sum是否与原数字相同,相同则输出

三,程序输出

四,源码 

int my_pow(int x, int y)
{
    if (y > 0)
        return x * my_pow(x, y - 1);
    else
        return 1;
}
int main()
{
    int num = 0, count = 0;
    int sum = 0, ji = 0;
    int qian_mian = 0, hou_mian = 0;
    for (num = 10000; num <= 99999; num++)
    {
        sum = 0;
        for (int hou_mian_shu_wei_shu = 4; hou_mian_shu_wei_shu > 0; hou_mian_shu_wei_shu--)
        {
            qian_mian = num / (my_pow(10, hou_mian_shu_wei_shu));
            hou_mian = num % (my_pow(10, hou_mian_shu_wei_shu));
            ji = qian_mian * hou_mian;
            sum += ji;
            if (sum == num && hou_mian_shu_wei_shu == 1)
            {
                printf("%dn", sum);
                count++;
            }
        }
    }
    printf("%dn", count);
    return 0;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/862348.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号