#MNS146. 幸运数(AC代码)

MNS146原题icon-default.png?t=N7T8https://marsoj.cn/p/MNS146

#MNS146. 幸运数

【题目描述】

你很喜欢旅游,来到了一个新的国家,这个国家每个数字都有一个幸运值。这个国家使用的是十进制,幸运值是十进制下每一位的累加和。

这个国家的国王给你一个区间[l,r],询问这个区间[l,r]包含的数对应的最大幸运值。

【输入格式】

lucky.in中读入数据。

第一行输入两个正整数l,r

【输出格式】

输出到lucky.out中。

一个数,区间[l,r]的最大幸运值。

【输入样例 1】

1 10

【输出样例 1】

9

【输入样例 2】

11 20

【输出样例 2】

10

【数据范围及约定】

  • 对于测试点1\sim 41\le l\le r\le 10
  • 对于测试点5\sim 81\le l\le r\le 1000
  • 对于测试点9\sim 101\le l\le r\le 10^{18},r-l\le 10^5

【题解】

本题考察枚举、取模。枚举[l,r]内的每个数,逐位累加获得该数的幸运值,同时取最大值即可。

【常见错误代码(80分)】

(死因:没用long long)

#include<bits/stdc++.h>
using namespace std;
int main() 
{
	std::ios::sync_with_stdio(false),cin.tie(0);
	int l,r;
	cin>>l>>r;
	int mx=0;
	for(int i=l;i<=r;i++){
		int val=0;
		int t=i;
		while(t>0)val+=t%10,t/=10;
		mx=max(mx,val);
	}
	cout<<mx<<endl;
	return 0;
}
【代码】
#include<bits/stdc++.h>
using namespace std;
int main() 
{
	std::ios::sync_with_stdio(false),cin.tie(0);
	long long l,r;
	cin>>l>>r;
	long long mx=0;
	for(long long i=l;i<=r;i++){
		long long val=0;
		long long t=i;
		while(t>0)val+=t%10,t/=10;
		mx=max(mx,val);
	}
	cout<<mx<<endl;
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值