C. The Legend of Freya the Frog

time limit per test

2 seconds

memory limit per test

256 megabytes

Freya the Frog is traveling on the 2D coordinate plane. She is currently at point (0,0)(0,0) and wants to go to point (x,y)(x,y). In one move, she chooses an integer dd such that 0≤d≤k0≤d≤k and jumps dd spots forward in the direction she is facing.

Initially, she is facing the positive xx direction. After every move, she will alternate between facing the positive xx direction and the positive yy direction (i.e., she will face the positive yy direction on her second move, the positive xx direction on her third move, and so on).

What is the minimum amount of moves she must perform to land on point (x,y)(x,y)?

Input

The first line contains an integer tt (1≤t≤1041≤t≤104) --- the number of test cases.

Each test case contains three integers xx, yy, and kk (0≤x,y≤109,1≤k≤1090≤x,y≤109,1≤k≤109).

Output

For each test case, output the number of jumps Freya needs to make on a new line.

Example

Input

Copy

复制代码

3

9 11 3

0 10 8

1000000 100000 10

Output

Copy

复制代码
8
4
199999

Note

In the first sample, one optimal set of moves is if Freya jumps in the following way: (0,00,0) →→ (2,02,0) →→ (2,22,2) →→ (3,23,2) →→ (3,53,5) →→ (6,56,5) →→ (6,86,8) →→ (9,89,8) →→ (9,119,11). This takes 8 jumps.

解题说明:此题是一道数学题,交替向上向右走,可以不走,请问到给定点需要走几次。由于可以走0步,所以向上走和向右走是相互独立的,只需要求出他们的最大值即可。注意走0步的移动也要统计在内。

cpp 复制代码
#include <iostream>
#include<algorithm>
using namespace std;

void solve()
{
	long long x, y, k;
	cin >> x >> y >> k;
	long long ansx = x / k + (x % k != 0), ansy = y / k + (y % k != 0);
	if (ansx > ansy)
	{
		cout << 2ll * ansx - 1 << endl;
	}
	else
	{
		cout << 2ll * ansy << endl;
	}
}
int main()
{
	int TT = 1;
	cin >> TT;
	while (TT--)
	{
		solve();
	}
	return 0;
}
相关推荐
星释6 分钟前
Rust 练习册 100:音乐音阶生成器
开发语言·后端·rust
风生u1 小时前
go进阶语法
开发语言·后端·golang
666HZ6661 小时前
C语言——黑店
c语言·开发语言
Gomiko1 小时前
JavaScript基础(八):函数
开发语言·javascript·ecmascript
〝七夜5691 小时前
JVM内存结构
java·开发语言·jvm
初级炼丹师(爱说实话版)1 小时前
JAVA泛型作用域与静态方法泛型使用笔记
java·开发语言·笔记
技术净胜2 小时前
MATLAB二维绘图教程:plot()函数全解析(线条样式/颜色/标记/坐标轴设置)
开发语言·matlab
Slow菜鸟2 小时前
Java开发规范(八)| 安全规范—企业级应用的“架构级底线”
java·开发语言·安全
憨憨崽&2 小时前
进击大厂:程序员必须修炼的算法“内功”与思维体系
开发语言·数据结构·算法·链表·贪心算法·线性回归·动态规划
毕设源码-邱学长2 小时前
【开题答辩全过程】以 基于Java的公职备考在线学习系统的设计与实现为例,包含答辩的问题和答案
java·开发语言·学习