第14届蓝桥杯大赛——真题训练第五天

目录

第一题:质因数个数

问题描述

输入格式

输出格式

样例输入

样例输出

样例说明

第二题:三羊献瑞

题目描述 

题目分析

题目代码

第三题: 加法变乘法

题目描述

 题目思路

题目代码

 


第一题:质因数个数

问题描述

给定正整数 n, 请问有多少个质数是 n 的约数。

输入格式

输入的第一行包含一个整数 n 。

输出格式

输出一个整数, 表示 n 的质数约数个数。

样例输入

396

样例输出

3

样例说明

396 有 2,3,112,3,11 三个质数约数。

题目分析

//不需要遍历到n,任何一个数,它的质因子大于根号n的要么没有,要么只有一个
//对于正整数 N 来说,它的任意一个因数 T 都是它质因数的乘积
//但是要注意一个问题,比如说 求6得质因子个数,当i*i<=6时结束循环,此时i一定是小于3的,按照我们的分析 6应该包含2个质因子(2和3),
//所以当循环完毕时,要判断一下 n此时的值,若为1 说明已经把质因数找完,若不为1,那么剩下的一定是个质数

题目代码 

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        long n = sc.nextLong();
        int ans = 0;
        //不需要遍历到n,任何一个数,它的质因子大于根号n的要么没有,要么只有一个
        //对于正整数 N 来说,它的任意一个因数 T 都是它质因数的乘积
        //但是要注意一个问题,比如说 求6得质因子个数,当i*i<=6时结束循环,此时i一定是小于3的,按照我们的分析 6应该包含2个质因子(2和3),
        //所以当循环完毕时,要判断一下 n此时的值,若为1 说明已经把质因数找完,若不为1,那么剩下的一定是个质数
        for (int i = 2; i < Math.sqrt(n); i++) {
            if(n%i == 0) {
                ans++;
            }
            while(n%i==0) {
                n = n/i;
            }
        }
        if (n > 1) ans++;
        System.out.println(ans);
    }
}

第二题:三羊献瑞

题目描述 

观察下面的加法算式:

       祥 瑞 生 辉
  +   三 羊 献 瑞
  -------------------
  三 羊 生 瑞 气

其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字。请你填写“三羊献瑞”所代表的4位数字(答案唯一),不要填写任何多余内容。

题目分析

暴力fori 要注意循环条件

题目代码

public class 三羊辉瑞 {
    public static void main(String[] args) {
        int a,b,c,d,e,f,x;
        int sum1,sum2,sum;
        boolean flag=false;
        for(a=0; a<10; a++)
        {
            for(b=0; b<10; b++)
            {
                for(c=0; c<10; c++)
                {
                    for(d=0; d<10; d++)
                    {
                        for(e=0; e<10; e++)
                        {
                            for(f=0; f<10; f++)
                            {
                                for(x=0; x<10; x++)
                                {
                                    if(a!=b&&a!=c&&a!=d&&a!=e&&a!=f&&a!=x&&b!=c&&b!=d&&b!=e&&b!=f&&b!=x&&c!=d&&c!=e&&c!=f&&c!=x&&d!=e&&d!=f&&d!=x&&e!=f&&e!=x&&f!=x)
                                    {
                                        if(a!=1&&b!=1&&c!=1&&d!=1&&e!=1&&f!=1&&x!=1)
                                        {
                                            sum1=a*1000+b*100+c*10+d;
                                            sum2=1000+e*100+f*10+b;
                                            sum=10000+e*1000+c*100+b*10+x;
                                            if((sum1+sum2)==sum)
                                            {
                                                System.out.println(sum2);
                                                flag=true;
                                                break;
                                            }
                                        }
                                    }
                                }
                                if(flag)
                                    break;
                            }
                            if(flag)
                                break;
                        }
                        if(flag)
                            break;
                    }
                    if(flag)
                        break;
                }
                if(flag)
                    break;
            }
            if(flag)
                break;
        }
    }
}

第三题: 加法变乘法

题目描述

我们都知道:1+2+3+ … + 49 = 1225
现在要求你把其中两个不相邻的加号变成乘号,使得结果为2015

比如:
1+2+3+…+10*11+12+…+27*28+29+…+49 = 2015
就是符合要求的答案。

请你寻找另外一个可能的答案,并把位置靠前的那个乘号左边的数字提交(对于示例,就是提交10)。

注意:需要你提交的是一个整数,不要填写任何多余的内容。

 题目思路

我们可以假设靠前乘号的左边数字为a, 则右边的数字为a+1,靠后乘号的左边的数字为b,则乘号右边的数字为b+1。

所以算式可改写为:

1+2+3+...+a+(a+1)+(a+2)+...+b+(b+1)+...+49=1225   (1)

1+2+3+...+a*(a+1)+(a+2)+...+b*(b+1)+...+49=2015     (2)

(2)-(1)=a*(a+1)+b*(b+1)-a-(a+1)-b-(b+1)=2015-1225=790

所以原问题变成了在 1-49之间找两对相邻的数字,且它们的乘积之和减去四个数字之和的差为790

原文链接:https://blog.csdn.net/just16cz/article/details/84198038

题目代码

public class 加法变乘法 {
	
public static void main(String[] args) {
	int a,b,c,d;
	for(int i=1;i<=49;i++) {
		a=i;
		b=i+1;
		for(int j=i+2;j<=49;j++) {
			c=j;
			d=j+1;
			if(a*b+c*d-(a+b)-(c+d)==790&&a!=10) {
				System.out.println(a);
				break;
			}
		}
	}
}
}

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是第十四蓝桥杯Python组真题的部分内容: 一、选择题(每题5分,共40分) 1. 下列哪个不是Python的内置数据类型? A. int B. float C. char D. str 答案:C 2. 下列哪个不是Python的保留字? A. and B. or C. not D. xor 答案:D 3. 下列哪个不是Python的标准模块? A. os B. sys C. math D. timeit 答案:D 4. 下列哪个Python库可以用于科学计算? A. NumPy B. SciPy C. Matplotlib D. All of the above 答案:D 5. 下列哪个Python库可以用于机器学习? A. TensorFlow B. Keras C. PyTorch D. All of the above 答案:D 6. 下列哪个Python库可以用于爬虫? A. Requests B. BeautifulSoup C. Scrapy D. All of the above 答案:D 7. 下列哪个Python库可以用于图像处理? . OpenCV B. Pillow C. Scikit-image D. All of the above 答案:D 8. 下列哪个Python库可以用于游戏开发? A. Pygame B. Panda3D C. PyOpenGL . All of the above 答案:D 二、编程题(每题20分,共60分) 1. 编写一个Python程序,输入一个字符串,将其中的大写字母转换为小写字母,将其中的小写字母转换为大写字母,然后输出转换后的字符串。 2. 编写一个Python程序,输入一个整数n,输出n的阶乘。 3. 编写一个Python程序,输入一个字符串,判断该字符串是否为回文字符串。如果是回文字符串,则输出True,否则输出False。 以上是部分内容,完整的第十四蓝桥杯Python组真题可以在蓝桥杯官网上找到。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DaoJis

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值