蓝桥题库刷题:枚举

蓝桥题库刷题:枚举

oj 191

题目描述

小明对数位中含有 2、0、1、9 的数字很感兴趣(不包括前导 0),在 1 到 40 中这样的数包括 1、2、9、10 至 32、39 和 40,共 28 个,他们的和是 574。

请问,在 1 到 n 中,所有这样的数的和是多少?

输入描述

输入格式:

输入一行包含两个整数 n(1≤n≤104)n(1≤n≤104)。

输出描述

输出一行,包含一个整数,表示满足条件的数的和。

输入输出样例

示例

输入

40

输出

574
#include<iostream>
#include<string>
using namespace std;
int n;
int sum=0;
string s;
int main()
{
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	{
		s=to_string(i);
		for(int j=0;j<s.size();j++)
		{
			if(s[j]=='2'||s[j]=='0'||s[j]=='1'||s[j]=='9')
			{
				sum+=i;
				break;
			}
		}
	}
	cout<<sum;
	return 0;
}

直接转换为字符串,关键点:运用string库和to_string()函数.

oj152

#include <iostream>
using namespace std;
int n;
int a,b,c;
int sum=0;
int main()
{
	scanf("%d",&n);
	scanf("%d %d %d ",&a,&b,&c);
	for(int i=1;i<=n;i++)
	{
		if(i%a!=0&&i%b!=0&&i%c!=0)
		{
			sum++;
		}
	}
	printf("%d",sum);
  // 请在此输入您的代码
  return 0;
}

oj 3227

问题描述

在一个 n×m 的矩阵中,有一个数字出现了超过一半的次数,请设计一个高效算法找到这个数字。

输入格式

输入第一行包含两个整数 nm,表示矩阵的大小 (1≤n,m≤10^3)。接下来n 行,每行包含 m 个正整数,表示矩阵中的元素。

输出格式

输出一个整数,表示矩阵中出现次数超过一半的数字。

样例输入

3 3
1 2 3
2 2 2
1 2 2

样例输出

2
#include <bits/stdc++.h>
using namespace std;

int n, m;
map<int, int> mp;

int main()
{
  ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    cin >> n >> m;
    for(int i = 0; i < n * m; i++){
        int x = 0;
        cin >> x;
        mp[x]++;
    }

    for(auto item : mp){
        if(2 * item.second > n * m){
            cout << item.first << endl;
        }
    }

    return 0;
}

关键点:map的使用

猜你喜欢

转载自blog.csdn.net/qq_63250901/article/details/134785576
今日推荐