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

UVA - 10673 Play with Floor and Ceil(手动解方程)

时间:2016-08-19 20:54:33      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:

题目:

技术分享

技术分享

这个题目,不是在O(T)时间内解决的,估计是因为数论学的不好,只能套一些模板了,

比如我看网上基本上都是用欧几里得做的。

好了,说正事,就从欧几里得的理论基础开始说起——带余除法

算了,还是看百科吧点击打开百科

设s=x/k,那么,x=s*k+t,0≤t<k

那么方程化为s*k+t=p*k+q*(k+(t>0))

如果t=0,那么s=p+q,取p=s,q=0

如果t>0,那么s*k+t=(p+q)*k+q,取p=s-t,q=t

所以上面2种情况是一样的。

代码:

#include<iostream>
#include<stdio.h>
using namespace std;

int main()
{
	int n, x, k;
	scanf("%d", &n);
	while (n--)
	{
		scanf("%d%d", &x, &k);
		printf("%d %d\n", k - x%k, x%k);
	}
	return 0;
}

UVA - 10673 Play with Floor and Ceil(手动解方程)

标签:

原文地址:http://blog.csdn.net/nameofcsdn/article/details/52253710

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