蓝桥杯 算法训练 幸运的店家 题目描述 资源限制 时间限制:1.0s 内存限制:256.0MB问题描述 炫炫开了一家商店,卖的货只有一个,XXX,XXX卖N元钱。有趣的是,世界上只有面值为3的幂的纸币,即纸币只有1元的、3元的、9元的。。。。,有一天,桥神来买XXX,可他没办法正好给出N元钱,而炫炫没法找零,于是他只好用他的钱凑出了一个比N大,并且最小的价值,交给了炫炫。炫炫想知道,他这次最多可以得到多少张纸币。输入格式 一个数,N输出格式 一个数,为答案样例输入 4样例输出 2数据规模和约定 n<=10^17 方案1 贪心 思路: 重点: 没办法正好给出N元钱,凑出了一个比N大,并且最小的价值 最多可以得到多少张纸币。即不可能使用1元 , 如果使用1元,则把1元去掉一张后总钱数会>=N, 均不满足题意如果N不是3的倍数, 则可以全部使用3元,答案为 N/3+1如果N是3的倍数, 则只能使用3的幂的纸币, 即N=N/3, 直至满足条件3结束 #include<iostream> #include<algorithm> using namespace std; long long int n; long long int ans; int main(){ cin>>n; if (n % 3) { ans = (n / 3) + 1; } else { while (n % 3 == 0){ n /= 3; } ans = (n / 3) + 1; } cout << ans << endl; return 0; }