吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1467|回复: 13
收起左侧

[求助] 问个大佬们很简单的问题,生成一个五位数

[复制链接]
我是不会改名的 发表于 2021-3-19 17:45
五位数,不包含4。

随机输出一个数,并统计所有可能的结果(个数),这样的数有?种


用c语言,或者py,不能用过滤,不用正则。

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

17610172975 发表于 2021-3-19 17:53
这不应该在悬赏区,你发错地方了吧!
一只帅祖宗 发表于 2021-3-19 18:08
int strcmp(char *a, char *b);

对a和b的每个字符,按照ascii码值比较,如果二者完全相同返回0;如果a的ascii码值先出现较大者,会返回1;否则返回-1。

random 5个随机数,然后用上面的函数一个一个的查,

符合的放在变量里,不符合的放另一个,

循环函数用for,无限循环    for ( ; x != leth ; )

免费评分

参与人数 1热心值 +1 收起 理由
我是不会改名的 + 1 用心讨论,共获提升!

查看全部评分

lyl610abc 发表于 2021-3-19 18:09
本帖最后由 lyl610abc 于 2021-3-19 18:42 编辑

说一下思路:
int arr[9]={0,1,2,3,5,6,7,8,9};
从arr中任取五个数(去掉开头为0的)
算了补上C的代码(其实就是组合数稍微改改)

[C] 纯文本查看 复制代码
int out2[3];
void combine2(int arr[],int n,int m){
                int i,j;
        
        if(cnt==m){
                if(out2[0]!=0){
                for(j=0;j<m;j++){
                        printf("%d ",out2[j]);
                }
                printf("\n");
                }
        
                return;
        }

        for(i=0;i<n;i++){
                if(vis[i]==0){
                        vis[i]=1;
                        out2[cnt]=arr[i];
                        cnt++;
                        combine2(arr,n,m);
                        vis[i]=0;
                        cnt--;
                }
        
        
                
        }
}
int main(int argc, char* argv[])
{
        int arr[9]={0,1,2,3,5,6,7,8,9};
        combine2(arr,9,5);
        return 0;
}

免费评分

参与人数 1吾爱币 +3 热心值 +1 收起 理由
我是不会改名的 + 3 + 1 谢谢@Thanks!

查看全部评分

qianshang666 发表于 2021-3-19 18:28
lyl610abc 发表于 2021-3-19 18:09
说一下思路:
int arr[9]={0,1,2,3,4,6,7,8,9};
从arr中任取五个数(组合数的算法)

这思路爱了爱了
ligxi 发表于 2021-3-19 18:30
本帖最后由 ligxi 于 2021-3-19 18:31 编辑

[Python] 纯文本查看 复制代码
import itertools
import random

# 不含4
number_list = ['0', '1', '2', '3', '5', '6', '7', '8', '9']

five_digit_number_list = []
for i in itertools.product(number_list, repeat=5):
    data = str(int(''.join(i)))
    if len(data) == 5:
        five_digit_number_list.append(data)

# 随机取一个值
print(random.choice(five_digit_number_list))
# 总个数
print(len(five_digit_number_list))

免费评分

参与人数 1吾爱币 +2 热心值 +1 收起 理由
我是不会改名的 + 2 + 1 谢谢@Thanks!

查看全部评分

nstar1221 发表于 2021-3-19 18:36
lua:
local enum={0,1,2,3,5,6,7,8,9}
local i = math.random(1,#enum)
local total = 0
for i=2,#enum do
        for j=1,#enum do
                for k=1,#enum do
                        for l=1,#enum do
                                for m=1,#enum do
                                        print(enum[i]..enum[j]..enum[k]..enum[l]..enum[m])
                                        total = total + 1
                                end
                        end
                end
        end
end

print('total:'..total)
lyl610abc 发表于 2021-3-19 18:43

我怀疑我老年痴呆了
要求不包含4,我把5去掉了
fanvalen 发表于 2021-3-19 19:33
5^9个
生成的过程中也有可能重复
小能维尼 发表于 2021-3-19 19:47
额,是这样的?
9*10*10*10*10   =90000 个五位数
不能有4,8*9*9*9*9 = 52488 个

代码大概意思就是:
[1-9]*[0-9]*[0-9]*[0-9]*[0-9]
每一位都随机,但不包括4。
第一位不包括0.
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 04:51

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表