描述

数字具有神奇的魔力,神奇到ben想把所有数字全部保存起来。于是他设想了如下的保存方法。假设有一张无限大的纸板,将所有自然数(不包括0)按如下顺序排列书写在纸板上保存:
1 2 6 7  15  16 ...
3 5 8  14  17 ...
4 9  13  ...
10 12  ...
11  ...
...

在这样的排列下,3排列在第2行第1列,13排在第3行第3列。现在ben想知道,对任意自然数,它排列在第几行第几列?

输入

输入包含多组测试数据,每组测试数据占一行,为一个自然数N(64位整数范围内。)

输出

对每组输入的自然数,请输出(i,j),表示该自然数排列在第i行第j列。

样例输入

3
13
1993
9223372036854775807

样例输出

(2,1)
(3,3)
(24,40)
(2147483647,2147483650)

看到这一题我一开始的思路是这样的↓
#include <stdio.h>
int main()
{
    long long n,m,j;
    while(scanf("%lld",&n)!=EOF)
    {
        ,j=;m<n;m+=++j);
        )printf(+m-n,j-(m-n));
        +(m-n));
    }
    ;
}

果然超时

还是考虑如何使得m的取值更合适比较好

#include <stdio.h>
int main()
{
    long long n,m;
    while(scanf("%lld",&n)!=EOF)
    {
        ;(m*(m+))/>=n;m--);
        m+=;
        )printf(+(m*(m+))/-n,m-((m*(m+))/-n));
        ))/-n),+(m*(m+))/-n);
    }
    ;
}

↑这样想的时候也没抱着AC的打算

倒推之后用sqrt减少运算↓

#include <stdio.h>
#include <math.h>
int main()
{
    unsigned long long n,m,x;
    while(scanf("%llu",&n)!=EOF)
    {
        )*sqrt(n);(m*(m+)/)<n;m++);
        x = +(m*(m+))/-n;
        )printf();
        ,x);
    }
    ;
}

还是超时不过只有在9200000000000000000以上的某个值就会开始超时

然后发现在m*(m+1)的时候可能会溢出,所以改成了这样↓

 #include <stdio.h>
 #include <math.h>
 int main()
 {
     unsigned long long n,m,x;
     while(scanf("%llu",&n)!=EOF)
     {
         )*sqrt(n);((m/)/2.0))<n/2.0;m++);
         x = +(((m/;
         )printf();
         ,x);
     }
     ;
 }

但这样输出的时候许多大数的输出的是一样的坐标,估计是因为中间用到了浮点数运算所以导致的结果。

改成下面这样↓

 #include <stdio.h>
 #include <math.h>
 int main()
 {
     unsigned long long n,m,x;
     while(scanf("%llu",&n)!=EOF)
     {
         )*sqrt(n);((m/)/2.0))<n/2.0;m++);
         x = n-(m*(m-)/);
         )printf(,x);
         );
     }
     ;
 }

AC~

BJFU 1015的更多相关文章

  1. 1015: [JSOI2008]星球大战starwar

    1015: [JSOI2008]星球大战starwar Time Limit: 3 Sec Memory Limit: 162 MB Description 很久以前,在一个遥远的星系,一个黑暗的帝国 ...

  2. soj 1015 Jill's Tour Paths 解题报告

    题目描述: 1015. Jill's Tour Paths Constraints Time Limit: 1 secs, Memory Limit: 32 MB Description Every ...

  3. POJ 1015 Jury Compromise 2个月后重做,其实这是背包题目

    http://poj.org/problem?id=1015 题目大意:在遥远的国家佛罗布尼亚,嫌犯是否有罪,须由陪审团决定.陪审团是由法官从公众中挑选的.先随机挑选n个人作为陪审团的候选人,然后再从 ...

  4. BZOJ 1015 题解

    1015: [JSOI2008]星球大战starwar Description 很久以前,在一个遥远的星系,一个黑暗的帝国靠着它的超级武器统治者整个星系.某一天,凭着一个偶然的机遇,一支反抗军摧毁了帝 ...

  5. 【ZOJ】1015 Fishing Net

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1015 题意:给出一个n个点的无向图,询问是否为弦图,弦图定义为对于图中任意 ...

  6. [1015][JSOI2008]星球大战starwar(并查集)

    1015: [JSOI2008]星球大战starwar Time Limit: 3 Sec  Memory Limit: 162 MBSubmit: 2124  Solved: 909[Submit] ...

  7. 【BZOJ】1015: [JSOI2008]星球大战starwar(并查集)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1015 看了题解的囧T_T,一开始以为是求割点,但是想到割点不能统计.... 这题用并查集,思想很巧妙 ...

  8. PAT乙级 1015. 德才论 (25)

    1015. 德才论 (25) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Li 宋代史学家司马光在<资治通鉴&g ...

  9. fzu 1015 土地划分(判断线段相交+求出交点+找规律)

    链接:http://acm.fzu.edu.cn/problem.php?pid=1015  Problem 1015 土地划分 Accept: 714    Submit: 1675Time Lim ...

随机推荐

  1. 20145330第七周《Java学习笔记》

    20145330第七周<Java学习笔记> 第十三章 时间与日期 认识时间与日期 时间的度量 GMT(格林威治标准时间):现在不是标准时间 世界时(UT):1972年UTC出来之前,UT等 ...

  2. JDBC学习笔记1

    JDBC(java database connectivity)一.基于socket+数据库底层协议java sun ------标准(接口)java.sql.*;jdbc sun公司为了方便连接数据 ...

  3. maven创建web工程,并导入到eclipse中

    maven版本:3.1.0,eclipse版本:4.3 JDK:1.7 创建工程名是sa的maven工程 mvn archetype:create -DgroupId=com.bing-Dartifa ...

  4. [LintCode] Valid Number 验证数字

    Validate if a given string is numeric. Have you met this question in a real interview? Yes Example & ...

  5. 关于网上常见的几种MD5加密的区别

    (1) using System.Security.Cryptography; byte[] result = Encoding.Default.GetBytes(yps); //tbPass为输入密 ...

  6. Thinkphp中自己组合的数据怎样使用框架的分页

    做项目有时候,需要自己处理组合数据,不是直接从表中提取出来的.不能按照手册得方法分页显示数据.这时候就得想办法,正好看到他人的方法.地址为:http://www.thinkphp.cn/code/27 ...

  7. get_magic_quotes_gpc()

    php get_magic_quotes_gpc()函数:http://www.cnblogs.com/lsk/archive/2008/05/05/1184117.html 以及addslashes ...

  8. DataTable的一些用法

    手动给DataTable添加数据 DataTable tab = new DataTable(); tab.Columns.Add("id", typeof(int));//添加列 ...

  9. php全面获取url地址栏及各种参数

    <?php echo $_SERVER['HTTP_HOST']."<br>";//获取域名或主机地址 echo $_SERVER["SERVER_PO ...

  10. 关于格式转换 “%a.bs”

    这个形式的格式转换符用于输出, 如果a <= b,  那么输出的字符串串长大于等于a, 小于b; 否则, 输出的串长按照a指定的输出. (不够,用空格补齐)