有一个人前来买瓜

本文解析了华强如何根据面值为3的幂特性给出N元钱,探讨郝哥在不同情况下的最大纸币获取策略,涉及数学思维与编程技巧。

题目描述

image-20220305140043067

image-20220305140054745


解题思路

部分同学反映题目描述不清晰,但这也恰恰是其难点之一,考验的是我们对题目的信息提取能力。

信息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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值