题目描述


解题思路
部分同学反映题目描述不清晰,但这也恰恰是其难点之一,考验的是我们对题目的信息提取能力。
信息1:世界上只有面值为3的幂的纸币,也就是说纸币只有1元的、3元的、9元的、27元的……。
信息2:华强没办法正好给出N元钱。
对于N,我们分2种情况讨论:
第一种:N为3的幂,这种情况很简单,由信息2可知,华强不可能使用面值小于等于N元的纸币,所以只能使用面值大于N元的纸币,故郝哥最多可以得到1张纸币。
第二种:N不为3的幂,这种情况下,华强不可能使用面值为1元的纸币,而郝哥如果要得到最多的纸币,则只有在华强只使用面值为3元的纸币的情况下实现,故郝哥最多可以得到(n / 3 + 1)张纸币。
综上所述,郝哥最多可以得到的纸币数
ans = {1,N为3的幂;
(n / 3 + 1),N不为3的幂}
代码
#include <iostream>
using namespace std;
int main(){
long long n, i;
cin >> n;
for (i = 3; n % i == 0;i*=3);
cout << n / i + 1 << endl;
return 0;
}
本文解析了华强如何根据面值为3的幂特性给出N元钱,探讨郝哥在不同情况下的最大纸币获取策略,涉及数学思维与编程技巧。
274

被折叠的 条评论
为什么被折叠?



