码迷,mamicode.com
首页 > 其他好文 > 详细

奇怪的生日礼物(数论基础)

时间:2020-09-17 15:50:59      阅读:28      评论:0      收藏:0      [点我收藏+]

标签:输入   output   div   input   cas   今天   -o   sample   输出   

4750 - 第十四课: 奇怪的生日礼物

今天是旭旭的生日,所以今天他收到了很多礼物。

在这些礼物中,有一个 N∗NNN 玻璃棋盘,每个棋盘内都装有灯。 打开电路板电源时,一个不同的单元会每秒点亮一次,然后变暗。

灯将按照图中所示的顺序点亮。 

技术图片

在第一秒,(1,1)的灯将点亮。在第5秒,单元格(3,1)的灯将点亮。现在,旭旭正在尝试预测哪个坐标会在第 SS 秒被点亮。假设 NN 足够大。

输入

输入以整数 T(1≤T≤200)T(1T200)开始,表示测试用例的数量。

每个测试用例将包含一个整数 S(1≤S≤1015)S(1S1015),表示第 SS 秒。

输出

共有 TT 行。对于每组测试数据,输出一行信息 "Case t: x y" (不含引号)。

 其中 tt 表示对应的是第几组测试数据,x,yx,y表示第 SS 秒被点亮灯的坐标 。

样例

输入

3
8
20
25

输出

Case 1: 2 3
Case 2: 5 4
Case 3: 1 5

将完全平方数作为参考

/*************************************************************************
	> File Name: 4750.cpp
	> Author: Henry Chen
	> Mail: 390989083@qq.com 
	> Created Time: 六  9/ 5 22:51:41 2020
 ************************************************************************/

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int n;
	cin >> n;
	for(int i = 1;i <= n;i++)
	{
		long long s;
		scanf("%lld",&s);
		long long sq = sqrt(s);
		if(sq*sq == s) sq--;
		long long dif = s - sq*sq;
		//printf("%lld %lld\n",sq,dif);
		if(sq % 2 == 1)
		{
			if(dif > sq)
			{
				printf("Case %d: %lld %lld\n",i,sq+1,2*sq-dif+2);
			}
			else
			{
				printf("Case %d: %lld %lld\n",i,dif,sq+1);
			}
		}
		else
		{			
			if(dif > sq)
			{
				printf("Case %d: %lld %lld\n",i,2*sq-dif+2,sq+1);
			}
			else
			{
				printf("Case %d: %lld %lld\n",i,sq+1,dif);
			}
		}
	}
	return 0;
}

 

奇怪的生日礼物(数论基础)

标签:输入   output   div   input   cas   今天   -o   sample   输出   

原文地址:https://www.cnblogs.com/mzyy1001/p/13620233.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!