蓝桥杯练习题1

1.乘法表

九九乘法表是学习乘法时必须要掌握的。

在不同进制数下,需要不同的乘法表。

例如,四进制下的乘法表如下所示:

1*1=1
2*1=2 2*2=10
3*1=3 3*2=12 3*3=21

请注意,乘法表中两个数相乘的顺序必须为样例中所示的顺序,不能随意交换两个乘数。

给定 P,请输出 P 进制下的乘法表。

输入格式
输入一个整数 P。

输出格式
输出 P 进制下的乘法表。

P 进制中大于等于 10 的数字用大写字母 A、B、C、⋯ 表示。

数据范围
2≤P≤36
输入样例1:
4
输出样例1:

1*1=1
2*1=2 2*2=10
3*1=3 3*2=12 3*3=21

输入样例2:
8
输出样例2:

1*1=1
2*1=2 2*2=4
3*1=3 3*2=6 3*3=11
4*1=4 4*2=10 4*3=14 4*4=20
5*1=5 5*2=12 5*3=17 5*4=24 5*5=31
6*1=6 6*2=14 6*3=22 6*4=30 6*5=36 6*6=44
7*1=7 7*2=16 7*3=25 7*4=34 7*5=43 7*6=52 7*7=61
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
using namespace std;
int p;
string c(int n)
{
    
    
    string res;
    while(n)
    {
    
    
        int t = n%p;
        if(t < 10) res = (char)(t+'0')+res;
        if(t >= 10) res = (char)(t+'A'-10)+res;
        n /= p;
    }
    return res;
}
int main()
{
    
    
    cin >> p;
    for(int i = 1; i < p; i++)
    {
    
    
    for(int j = 1; j <= i; j++)
    {
    
    
        cout <<c(i)<<"*"<<c(j)<<"="<<c(i*j)<<" ";
    }
    cout <<endl;
    }
    return 0;
    
}

2.最大降雨量

由于沙之国长年干旱,法师小明准备施展自己的一个神秘法术来求雨。
这个法术需要用到他手中的49 张法术符,上面分别写着1 至49 这49 个数字。法术一共持续7 周,每天小明都要使用一张法术符,法术符不能重复使用。
每周,小明施展法术产生的能量为这周7 张法术符上数字的中位数。法术施展完7 周后,求雨将获得成功,降雨量为7 周能量的中位数。
由于干旱太久,小明希望这次求雨的降雨量尽可能大,请大最大值是多少?

在这里插入图片描述

3.不同子串

一个字符串的非空子串是指字符串中长度至少为1 的连续的一段字符组成的串。例如,字符串aaab 有非空子串a, b, aa, ab, aaa, aab, aaab,一共7 个。
注意在计算时,只算本质不同的串的个数。
请问,字符串0100110001010001 有多少个不同的非空子串?

#include <bits/stdc++.h>

using namespace std;

int main()
{
    
    
    set<string> str;
    string s;
    cin >> s;
    int t = s.length();
    for(int i=0;i<t;i++)//循环起始位置
    {
    
    
        for(int j=1;j<=t-i;j++)//循环长度
        {
    
    
            str.insert(s.substr(i,j));//数量累加
        }
    }
    cout << str.size();
    return 0;
}

4.第几个幸运数

到x星球旅行的游客都被发给一个整数,作为游客编号。
x星的国王有个怪癖,他只喜欢数字3,5和7。
国王规定,游客的编号如果只含有因子:3,5,7,就可以获得一份奖品。
我们来看前10个幸运数字是:
3 5 7 9 15 21 25 27 35 45
因而第11个幸运数字是:49

小明领到了一个幸运数字 59084709587505,他去领奖的时候,人家要求他准确地说出这是第几个幸运数字,否则领不到奖品。
请你帮小明计算一下,59084709587505是第几个幸运数字。1905

#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
typedef long long ll;
int main()
{
    
    
	ll x;
	cin >> x;
	int sum = -1;
	for(ll i = 1; i <= x; i*=7)
	for(ll j = i; j <= x; j*=5)
	for(ll k = j; k <= x; k*=3)
	{
    
    
		++sum;
	}
	cout << sum <<endl;
	return 0;
}

猜你喜欢

转载自blog.csdn.net/Annabel_CM/article/details/115396257