2025年信息与未来2022真题笔记

信息与未来2022真题笔记信息与未来 2022 幸运数字 题目描述 如果一个十进制数字从左到右读时 所有数位都是从小到大严格递增 的 我们就称它是幸运数字 例如 9 9 9 27 27 27

大家好,我是讯享网,很高兴认识大家。

[信息与未来 2022] 幸运数字

题目描述

如果一个十进制数字从左到右读时,所有数位都是从小到大严格递增的,我们就称它是幸运数字。例如:

  • 9 9 9 27 27 27 1234 1234 1234 都是幸运数字;
  • 11 11 11 80 80 80 243 243 243 1503 1503 1503 不是幸运数字。

对于给定的 a a a b b b,请你求出 a , a + 1 , a + 2 , ⋯   , b a,a+1,a+2,\cdots,b a,a+1,a+2,,b 中幸运数字的数量。

输入格式

输入一行空格分隔的两个整数 a a a b b b

输出格式

输出一行一个整数,代表 a , a + 1 , a + 2 , ⋯   , b a,a+1,a+2,\cdots,b a,a+1,a+2,,b 中幸运数字的数量。

样例 #1

样例输入 #1

1 100 

讯享网

样例输出 #1

讯享网45 

样例 #2

样例输入 #2

4096 65536 

样例输出 #2

讯享网141 

提示

对于 100 % 100\% 100% 的数据,满足 1 ≤ a ≤ b ≤ 1 , 000 , 000 1\leq a\leq b\leq 1,000,000 1ab1,000,000

正解

暴力枚举。

代码

#include <bits/stdc++.h> //#define int long long using namespace std; int n,m; int ans; void solve() { 
    cin >> n >> m; for (int i = n;i <= m;i++) { 
    int now = i,f = 1; while (now) { 
    if (now%10 <= now/10%10) { 
    f = 0; break; } now /= 10; } ans += f; } cout << ans; } signed main() { 
    int TTT; // cin >> TTT; TTT = 1; while (TTT--) solve(); return 0; } 

[信息与未来 2022] 沙滩面积

题目描述

我们获得了一幅陆地和水域情况的卫星照片,照片可以看成是一个 n n n m m m 列的矩形,矩形中的每个格子要么是陆地(用半角点号 . \texttt{.} . 表示),要么是水域(用井号 # \texttt{\#} # 表示)。

虽然卫星照片可以清楚的辨别出陆地和水域,但陆地的具体类型却并不明确。现在我们了解到,对于一块是水域的方格,它向上、下、左、右四个方向 k k k 步之内可达的陆地格子,均会形成沙滩。例如,下图展示了 k = 2 k=2 k=2 的情况,蓝色的格子代表水域,标为黄色的陆地格子是沙滩。


讯享网

你的任务是根据卫星照片计算出属于“沙滩”格子的数量。注意:卫星照片只拍摄了包含水域的部分,水域附近的沙滩可能出现在卫星照片边界之外。你可以假设卫星照片之外不存在任何水域。

输入格式

输入的第一行是空格分隔的三个整数 n , m n,m n,m k k k,代表拍摄的卫星照片共有 n n n m m m 列,以及形成沙滩的范围 k k k

接下来 n n n 行,每行一个字符串。字符串的长度恰好是 m m m,代表卫星照片的一行,其中:

  • 井号 # \texttt{\#} # 表示一片水域;
  • 半角点号 . \texttt{.} . 表示一片陆地。

输出格式

输出一行一个整数,代表沙滩格子的数量。

样例 #1

样例输入 #1

讯享网2 4 2 .# ...# 

样例输出 #1

26 

样例 #2

样例输入 #2

讯享网5 10 3 .........# ..# .........# #.....# .....# 

样例输出 #2

103 

提示

对于 40 % 40\% 40% 的数据,满足 n = m = 1 n=m=1 n=m=1
对于 100 % 100\% 100% 的数据,满足 1 ≤ n , m ≤ 100 1\leq n,m\leq 100 1n,m100 1 ≤ k ≤ 10 1\leq k\leq 10 1k10

正解

dfs暴搜。

代码

讯享网#include <bits/stdc++.h> //#define int long long using namespace std; int n,m,k; char a[200][200]; int vis[200][200]; int sum; void dfs(int x,int y,int dep) { 
    if (vis[x][y] != 1) vis[x][y] = 2; if (dep == k) return ; dfs(x+1,y,dep+1); dfs(x,y+1,dep+1); dfs(x-1,y,dep+1); dfs(x,y-1,dep+1); } void solve() { 
    cin >> n >> m >> k; for (int i = 20;i < 20+n;i++) for (int j = 20;j < 20+m;j++) { 
    cin >> a[i][j]; if (a[i][j] == '#') vis[i][j] = 1; } for (int i = 20;i < 20+n;i++) for (int j = 20;j < 20+m;j++) { 
    if (a[i][j] == '.') continue; dfs(i,j,0); } for (int i = 0;i < 200;i++) for (int j = 0;j < 200;j++) if (vis[i][j] == 2) sum++; cout << sum; } signed main() { 
    int TTT; // cin >> TTT; TTT = 1; while (TTT--) solve(); return 0; } 
小讯
上一篇 2025-01-13 13:27
下一篇 2025-03-11 14:35

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/47204.html