雨下,听风 2022-05-21 10:22 采纳率: 75%
浏览 38
已结题

这个怎么解,程序太复杂,求帮助

img


样例输出 1

203

样例输⼊ 2

900 4096

样例输出 2

389

主要难的是转这么多进制,求哪位思考下

  • 写回答

3条回答 默认 最新

  • WaitIKnowYou 2022-05-21 10:53
    关注

    假定 是幸运数字返回true 不是返回false
    进制转换 你输入的咱默认十进制
    while(n)
    {
    a[i++]=n%10;
    n/=10
    }
    把每一位存到数组
    遍历数组
    先判断有没有 0 如果有 直接return false

    然后呢
    再写个函数 判断是否五进制是否幸运数字 有0返回false
    进制转换不过是短除法,, 把余数直接存数组就行了 一样的遍历判断方法

    之后类似 我写好了是否幸运数字的判断 你再写个循环找数字 就ok了 对了 我不会c++语法 自己看着改

    #define _CRT_SECURE_NO_WARNINGS
    #include<stdio.h>
    #define True 1
    #define False 0
    
    int jinzhi(int n,int j) 
    {
        int a[10],i=0;
        int temp = n;
        while (temp)
        {
            a[i++] = temp % j;
            temp /= j;
        }
        for (i = 0;i < 10;i++)
            if (a[i] == 0)
                return False;
        return True;
    
    }
    
    int isLuck(int n)
    {
        
    
        //五 七 九进制判断  全真和为3  不是3 说明不是幸运数字
        if (jinzhi(n, 5) + jinzhi(n, 7) + jinzhi(n, 9) != 3)
            return False;
        else
            return True;
        
    }
    
    int main() 
    {
        int n;
        printf("十进制输入一个数n:");
        scanf("%d", &n);
        if(isLuck(n))
            printf("是幸运数字");
        else
            printf("不是幸运数字");
    
    
        return 0;
    }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 5月29日
  • 已采纳回答 5月21日
  • 创建了问题 5月21日