编程萌新啊 2023-07-22 23:05 采纳率: 50%
浏览 68

蜗蜗棋的代码求解希望解答

时间限制:1 s
空间限制:1024 MB
c++ 用二分
蜗蜗棋
描述
蜗蜗最近沉迷上了蜗蜗棋。

蜗蜗棋里有一颗棋子,一开始出现在数轴上等于 x 的位置。

对于每一步,假设当前棋子的位置为 c,如果 c<k,那么蜗蜗会把棋子挪到位置 c+y,否则蜗蜗会把棋子挪到位置 c−z。

给定 x,y,z,k,s,请问 s 步以后棋子在什么位置?

输入格式
第一行一个整数 test 表示数据组数。

对于每组数据,一行五个整数 x,y,z,k,s。

输出格式
对于每组数据,输出一行一个整数表示棋子最后的位置。

样例输入
2
1 2 3 3 2
1 2 3 3 3
样例输出
0
2
数据规模
对于 30% 的数据,保证 1≤test≤100,1≤s≤105。

对于 100% 的数据,保证 1≤test≤105,1≤x,y,z,k,s≤109。

  • 写回答

3条回答 默认 最新

  • awtuajfkjaskdfu 2023-07-27 18:29
    关注

    如果想使用二分,那么这个代码不知道是否可以发帮到你

    #include<bits/stdc++.h>
    using namespace std;
    int t, x, y, z, k, s;
    int main() {
        scanf("%d", &t);
        for (int i = 1; i <= t; i++) {
            scanf("%d%d%d%d%d", &x, &y, &z, &k, &s);
            int L = 0, R = s;
            while (L+1< R) {
                long long M = (L + R) / 2;
                long long c = x + M * y - (s - M) * z;
                if (c > k + y)
                    R = M;
                else
                    L = M;
            }
            printf("%d\n", x - (s - L) * z + L * y);
        }
        return 0;
    }
     
    
    
    评论

报告相同问题?

问题事件

  • 创建了问题 7月22日

悬赏问题

  • ¥15 kali linux用wget archive.kali.org/archive-key.asc指令下载签名无效(失败)
  • ¥15 openHarmony 利用c++程序在dayu210开发板上实现拉取RTSP视频流并且在屏幕上显示
  • ¥15 GD32H757的can通信配置
  • ¥20 nist随机数测试的问题
  • ¥20 帮我解决这个项目,thank you各位程序员
  • ¥15 哪位能用ea软件做一下,有偿
  • ¥15 按要求编写汇编语言,并设计仿真电路图
  • ¥15 电脑软件运行次数如何统计
  • ¥15 同一个浏览器打开两个窗口怎么区分会话
  • ¥100 如何编写自己的emmc镜像