python - Codechef 练习题 - Chef 和去货币化
问题描述
问题是: 在一个叫做Chef Land的国家,发生了很多货币欺诈,所以该国元首Chefu决定选择新的当地货币面额——所有整数N以内的偶数硬币都应该存在. 几天后,一个市民抱怨没有办法创造一个奇数值,于是 Chefu 决定他也应该引入价值为 1 的硬币。形式上,给你一个整数 N;对于 v=1 且每个偶数正整数 v≤N,存在价值为 v 的硬币。
你还得到一个整数 S。为了快速处理交易,找出支付价格 S 所需的最小硬币数量。
输入 输入的第一行包含一个整数 T,表示测试用例的数量。T 测试用例的描述如下。每个测试用例的第一行也是唯一一行包含两个空格分隔的整数 S 和 N。输出 对于每个测试用例,打印一行包含一个整数 - 硬币的最小数量。
约束 条件 1≤T≤10,000 1≤S≤109 2≤N≤109 N 为偶数
子任务子任务 #1(100 分):原始约束
示例输入 4 2 2 1 14 30 10 31 4 示例输出 1 1 3 9
我的解决方案是
n=int(input())
res=[]
for i in range(1,n+1):
S,N = [int(x) for x in input().split()]
rem=S%N
if rem == 0:
res.append(int(S/N))
else:
if rem==1:
res.append(int(S/N+1))
else:
if rem/2 == 0:
res.append(int(S/N+1))
else:
res.append(int(S/N+2))
for j in res:
print(j)
它显示我的答案是错误的。谁能帮我 ?
解决方案
实际上,我并没有考虑将 1 作为余数的情况,即在 31、41、51 等数字的情况下,这给我带来了麻烦。好吧,在考虑了上述条件和一些小操作之后,它终于奏效了。希望你能理解。感谢您的回复。
n=int(input())
res=[]
for i in range(n):
S,N = [int(x) for x in input().split()]
rem=S%N
if S==1:
res.append(int(1))
elif(rem == 0):
res.append(int(S/N))
else:
if(rem%2==0 or rem==1):
res.append(int(S/N+1))
else:
res.append(int(S/N+2))
for j in res:
print(j)
推荐阅读
- xamarin - 如何减小 xamarin 表单中占位符的字体大小?
- php - 在 Woocommerce 中更改管理产品“虚拟”复选框字段标签名称
- docker - Gitlab CI 将环境变量传递给 docker build
- karate - 如何在条件循环中使用 karate.match
- javascript - 如何使 &:hover 可访问?我可以同时使用焦点和悬停吗?
- rust - 如何在 QEMU 模拟器下在 Windows10 64 位上运行基于 Rust 的 Redox OS 的预编译镜像?
- python - 读取 Http 流
- c++ - 包装枚举集
- vb.net - 如何在VB.NET中添加一键播放两个声音文件
- javascript - SWT 浏览器小部件:如何监听 JavaScript 事件?