求这样两个数据:5位数=2*4位数,9个数字各不相同。

不来虚的,直接上代码:

#include<stdio.h>
int a[10];//用来计算各个数字的个数,分别是从0到9
int amount=0;//计算总共的这个符合要求的数的对数
int  find(int i)
{
    int j,b,c;
    int flag=1;//标志量,如果为1则说明没有重复的数字的个数,为符合要求的
    int count=0;
    for(j=0;j<10;j++)
        a[j]=count;//让开始的个数都为0,以便计算
    b=2*i;
    c=b+i*100000;//链接两个数,更方便计算最后是不是有重复的数字
    for(j=1;j<=9;j++)
    {
        count=c%10;
        c=c/10;
        a[count]=a[count]+1;
        if(a[count]>1)
            flag=0;//判断是否有重复的数字
    }
    if(flag==1)
    {
        printf("%6d%6d\n",i,b);
        amount=amount+1;//输出
    }
    else
        return 0;
}
void main()
{
    int i;
    for(i=5000;i<9999;i++)
        find(i);
    printf("符合要求的数共有%d对!",amount);
}

结果如下:
在这里插入图片描述

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 以下是Python代码实现: ```python def find_numbers(n): count = 0 for i in range(101, n+1): if int(i**0.5)**2 == i and len(set(str(i))) < 3: count += 1 return count if __name__ == '__main__': n = int(input("请输入一个3位数:")) print("满足条件的数的个数为:", find_numbers(n)) ``` 主函数中,先输入一个3位数n,然后调用find_numbers函数,输出满足条件的数的个数。在find_numbers函数中,利用for循环遍历101到n之间的所有数,判断是否为完全平方数且有两位数字相同,如果是,则计数器加1。最后返回计数器的值。 ### 回答2: 首先,可以写一个判断完全平方数的函数(不需要参数传入): ``` def is_square(num): sqrt_num = int(num**0.5) return sqrt_num**2 == num ``` 接下来,可以写主函数,利用参数传入一个3位数n,然后遍历101~n之间的所有数字,对于每个数字num,判断它是否为完全平方数,并且它的十位数字和个位数字相同,若满足条件就计数器cnt加1。最后返回cnt。 完整代码如下: ``` def is_square(num): sqrt_num = int(num**0.5) return sqrt_num**2 == num def find_special_nums(n): cnt = 0 for num in range(101, n+1): if is_square(num) and str(num)[0] != str(num)[2] and str(num)[1] in [str(num)[0], str(num)[2]]: cnt += 1 return cnt n = int(input("请输一个3位数n: ")) cnt = find_special_nums(n) print(f"101~{n}间所有满足条件的数的个数为{cnt}") ``` 使用示例: ``` 请输一个3位数n: 500 101~500间所有满足条件的数的个数为4 ``` ### 回答3: 这里提供一个 Python 的解法。 首先需要解决两个问题: 1. 判断一个数是不是完全平方数 2. 判断一个数有没有两位数字相同 对于第一个问题,可以使用 math 库的 sqrt 函数来获取一个数的平方根,如果结果是整数,那么这个数就是完全平方数。 对于第二个问题,可以先将这个数转换为字符串,然后使用 set 函数去掉重复数字,如果长度不等于原来的长度,那么就有重复数字。 接下来就可以编写函数了: ```python import math def find_nums(n): count = 0 for i in range(101, n+1): # 判断是否是完全平方数 if int(math.sqrt(i)) ** 2 == i: # 判断是否有两位数字相同 if len(set(str(i))) != len(str(i)): count += 1 return count ``` 主函数可以这样写: ```python if __name__ == '__main__': n = int(input('请输入一个3位数n:')) count = find_nums(n) print(f'101~{n}间有{count}个满足条件的数。') ``` 这里使用了 if __name__ == '__main__': 的写法来避免在导入该模块时就执行主函数。输入一个 3 位数 n 后,就可以输出满足条件的数的个数了。 比如输入 500,输出: ``` 101~500间有6个满足条件的数。 ``` 其中满足条件的数为 144, 169, 196, 256, 324 和 676。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值