能量与宇宙威慑 (夏令营题目)
  • 板块学术版
  • 楼主shyzq
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/7/13 22:03
  • 上次更新2024/7/14 08:51:57
查看原帖
能量与宇宙威慑 (夏令营题目)
1391536
shyzq楼主2024/7/13 22:03

描述

引力天线转至预定角度,你握紧开关,此时人类的命运正攥在你的手中……

人类文明走到了生死攸关的时刻,面对外星势力的入侵,人类想要借发射强引力波以威慑外星势力,发射需要强大的能量支持,而人类资源有限,现在人类需要在有限资源内使得能量最大化。

能量与资源的关系离不开两个给定常数 ? , ? a,b ,资源 ? Y 等于能量 ? e 与 ? a 的乘积加上能量 ? e 的位数与 ? b 的乘积。形式地说, y= ? . ? + ? . ? ( ? ) Y=a.e+b.f(e),其中 ? ( ? ) f(e) 代表 ? e 的位数,现在你要用给定的有限的资源 ? Y 让 ? e 最大,然而能量也有上限,人类最大只能获取 1 0 9 10 9 个单位的能量,当然人类获取的能量为非负整数。 输入

输入一行三个整数 ? , ? , ? a,b,Y 。代表两个常数以及资源数。

输出

输出一个数,代表能量最大值。

输入样例 1

10 7 100

输出样例 1

9

输入样例 2

2 1 100000000000

输出样例 2

1000000000

输入样例 3

1000000000 1000000000 100

输出样例 3

0

输入样例 4

1234 56789 314159265

254309

帮我看一下代码呗 就得了九十分

#include<bits/stdc++.h>
using namespace std;
long long a,b,c;
int ws(long long n){
	long long sum=0;
	while(n!=0) sum++,n/=10;
	return sum;
}
int main(){
	cin>>a>>b>>c;
	if(c/max(a,b)>=1000000000){
		cout<<1000000000;
		return 0;
	}
	for(long long i=c/min(a,b);i>=0;i--)
		if(a*i+b*ws(i)<=c){
			cout<<i<<endl;
			return 0;
		}
	return 0;
}
2024/7/13 22:03
加载中...