zoukankan      html  css  js  c++  java
  • uva 10673 Play with Floor and Ceil

    Problem A
    Play with Floor and Ceil
    Input: standard input
    Output: standard output
    Time Limit: 1 second
     

    Theorem

    For any two integers x and k there exists two more integers p and q such that:

    It’s a fairly easy task to prove this theorem, so we’d not ask you to do that. We’d ask for something even easier! Given the values of x and k, you’d only need to find integers p and q that satisfies the given equation.

     

    Input

    The first line of the input contains an integer, T (1≤T≤1000) that gives you the number of test cases. In each of the following T lines you’d be given two positive integers x and k. You can safely assume that x and k will always be less than 108.

    Output

    For each of the test cases print two integers: p and q in one line. These two integers are to be separated by a single space. If there are multiple pairs of p and q that satisfy the equation, any one would do. But to help us keep our task simple, please make sure that the values,  and fit in a 64 bit signed integer.

    Sample Input                              Output for Sample Input

    3

    5 2

    40 2

    24444 6

    1 1

    1 1

    0 6


    Problem setter: Monirul Hasan, Member of Elite Problemsetters' Panel

    Special Thanks: Shahriar Manzoor, Member of Elite Problemsetters' Panel

    知道floor和ceil 就行。

    floor向下取整 floor(1.9999) = 1;

    同理。

     1 #include<iostream>
     2 #include<stdio.h>
     3 #include<cstring>
     4 #include<cstdlib>
     5 #include<cmath>
     6 using namespace std;
     7 typedef long long LL;
     8 
     9 LL Ex_GCD(LL a,LL b,LL &x,LL& y)
    10 {
    11     if(b==0)
    12     {
    13         x=1;
    14         y=0;
    15         return a;
    16     }
    17     LL g=Ex_GCD(b,a%b,x,y);
    18     LL hxl=x-(a/b)*y;
    19     x=y;
    20     y=hxl;
    21     return g;
    22 }
    23 int main()
    24 {
    25     LL T;
    26     LL a,b,c,g,x,y,n,m;
    27     scanf("%d",&T);
    28     while(T--)
    29     {
    30         scanf("%lld %lld",&n,&m);
    31         a = (LL)floor(n/(double)m);/**向下取整floor(1.999) = 1  **/
    32         b = (LL)ceil(n/(double)m);
    33         c = n;
    34         g = Ex_GCD(a,b,x,y);
    35 
    36         x=x*(c/g);
    37         b=b/g;
    38         x=x%b;
    39         while(x<0) x=x+b;
    40         c=c/g;
    41         y=(c-x*a)/b;
    42         printf("%lld %lld
    ",x,y);
    43     }
    44     return 0;
    45 }
  • 相关阅读:
    keepalived.conf配置说明
    监控端口是否开放,端口未开放关闭虚拟ip,端口开放启动虚拟IP
    lvs UDP端口负载均衡配置
    keepalived自动安装脚本
    Keepalived+LVS实现高可用负载均衡双主模式
    cookie和session的区别
    jmeter 关联
    浏览器缓存详解:expires,cache-control,last-modified,etag详细说明
    Session、Cookie、Cache、Token分别是什么及区别
    获取MyBatis
  • 原文地址:https://www.cnblogs.com/tom987690183/p/3746404.html
Copyright © 2011-2022 走看看