您当前的位置: 首页 > 

贤鱼不闲

暂无认证

  • 3浏览

    0关注

    75博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

贤鱼的刷题日常-一文解答你的所有疑惑【全国信息学奥林匹克联赛(NOIP1010)复赛】

贤鱼不闲 发布时间:2022-08-05 18:01:37 ,浏览量:3

全国信息学奥林匹克联赛(NOIP1010)复赛题目详解
  • 题目1
    • 思路
    • 代码
  • 题目2
    • 思路
    • 代码
  • 题目3
    • 思路
    • 代码
  • 题目4
    • 思路
    • 代码
本文所有代码均可放心食用

题目1

1.数字统计 (two.pas/c/cpp) 【问题描述】 请统计某个给定范围[L, R]的所有整数中,数字 2 出现的次数。 比如给定范围[2, 22],数字 2 在数 2 中出现了 1 次,在数 12 中出现 1 次,在数 20 中出现 1 次,在数 21 中出现 1 次,在数 22 中出现 2 次,所以数字 2 在该范围内一共出现了 6 次。 【输入】 输入文件名为 two.in。 输入共 1 行,为两个正整数 L 和 R,之间用一个空格隔开。 【输出】 输出文件名为 two.out。 输出共 1 行,表示数字 2 出现的次数。 【输入输出样例 1】 two.in two.out 2 22 6 【输入输出样例 2】 two.in two.out 2 100 20 【数据范围】 1 ≤ L ≤R≤ 10000。

思路

这道题只需要一个循环然后每一位%10后/10处理即可 例如:123%10=3!=2,123/10=12,12%10=2,12/10=1,1%10=1,1/10=0; 所以无论数字是几位数都可以这样处理

代码
#include
#include
#include
#include
using namespace std;
char s;
int n,m;
int main(){
	freopen("two.pas.in","r",stdin);
	freopen("two.pas.out","w",stdout);
	cin>>n>>m;
	int ans=0;
	for(int i=n;i>t;
for(int i=1;i>m[i];
}
int c=t+1;
int ans=0;
while(cx2>>y2>>n;
	for(int i=1;i>a>>b;
		e[i].x=(x1-a)*(x1-a)+(yl-b)*(yl-b);
		e[i].y=(x2-a)*(x2-a)+(y2-b)*(y2-b);//这里记录距离
	}
	sort(e+1,e+n+1);
	int ans=e[n].x;//这里是为了处理当导弹只有1枚的结果
	int c=0;
	
	for(int i=n-1;i>=1;i--){
		 c=max(c,e[i+1].y);//如果加入的导弹到2的距离更大,那么更新数据,这里取最大值是因为当拦截了最远的导弹,那么其他的导弹就一起拦截了的
		ans=min(ans,c+e[i].x);
	
	}
	coutn; for(int i=1;ia[i][j]; a[j][i]=a[i][j]; } } int ans=0; for(int i=1;ia[i][n-1]?ans:a[i][n-1];//这里是要记录我们选择的默契值里最大的一个 } cout            
关注
打赏
1664987740
查看更多评论
0.0399s