zoukankan      html  css  js  c++  java
  • JZOJ_4421. aplusb (Standard IO)

    Description

    SillyHook要给小朋友出题了,他想,对于初学者,第一题肯定是a+b 啊,但当他出完数据后神奇地发现.in不见了,只留下了一些.out,他想还原.in,但情况实在太多了,于是他想要使得[a,b] ([a,b] 表示a,b 的最小公倍数)尽可能大。

    Input

    输入文件的第一行一个整数T 表示数据组数。
    接下来T行每行一个整数n ,表示.out中的数值,即a+b=n 。

    Output

    共T行,每行一个整数表示最大的[a,b] 的值。

    Solution

    若n为奇数,则a和b相差 1 最优 若n为偶数,令m = n/2,

    若m − 1和m + 1均为奇数,则a = m − 1, b = m + 1

    否则a = m − 2, b = m + 2

    时间复杂度O(1)

    代码(非Solution讲的,比较暴力)

     1 var
     2   n,x:longint;
     3 function gcd(a,b:longint):longint;
     4 begin
     5   if a mod b=0 then exit(b);
     6   exit(gcd(b,a mod b));
     7 end;
     8 
     9 procedure main;
    10 var
    11   num:int64;
    12   i:longint;
    13 begin
    14   for i:=x div 2+1 to x-1 do
    15     if gcd(x-i,i)=1 then
    16       begin
    17         num:=(x-i);
    18         writeln(num*i);
    19         exit;
    20       end;
    21   writeln(x div 2);
    22 end;
    23 
    24 begin
    25   readln(n);
    26   while n>0 do
    27     begin
    28       readln(x);
    29       if x mod 2=1 then writeln(x div 2*(x div 2+1))
    30                    else main;
    31       dec(n);
    32     end;
    33 end.
  • 相关阅读:
    ACM Red and Black
    ACM Wooden Stricks
    ACM Strange fuction
    ACM pie
    ACM Doing Homework again
    ACM FatMouse' Trade
    ACM 今年暑假不AC
    ACM Ignatius and the Princess II
    一、数组---第三大的数
    一、数组---移动零※※※※※※
  • 原文地址:https://www.cnblogs.com/zyx-crying/p/9505700.html
Copyright © 2011-2022 走看看