hdu1597的两种解法

原创 2012年03月23日 11:57:29

好吧,虽然是个水题,可以有个技巧。
有些题 可以直接用数学公式解决的、、、这里鼓励一下自己、、、、在几次WA后,忍了忍 一直没看解题报告大笑

法一:

打表,记录1-65535的和(开始没有注意到,计算到100000000,sum还是不够2^31,后来算算前n项和才用计算到65535而已)。

由此也发现一个问题,数字的存储是一个循环,先是正数,然后超出正数范围后变成负数,再超出负数范围变成正数。

#include <iostream>
using namespace std;
int sum[65536];
int main()
{
	int k;
	cin>>k;
	int i;sum[0]=0;
	for(i=1;i<65536;i++)
		sum[i]=sum[i-1]+i;
	while(k--)
	{
		int m;cin>>m;
		for(i=1;i<65536;i++)
			if(m<=sum[i]) break;
			m-=sum[i-1];
			m%=9;
			if(m==0) cout<<"9"<<endl;
			else cout<<m<<endl;
	}
	return 0;
}
法二:

转变为解一元二次方程,因为前n项的和m=n*(n+1)/2.于是,n=sqrt(2m+0.25)-0.5【ceil是向上取整函数】

代码:

#include <iostream>
#include <math.h>
using namespace std;
int main()
{
    unsigned long n;
    int k;
    while(cin>>k)
    {
        while(k--)
        {
            cin>>n;
                double i=ceil(sqrt(2*n*1.0+0.25)-0.5);   //ceil()函数为向上取整
                unsigned long j=(unsigned long)i-1;
                n=n-j*(j+1)/2;
                if(n%9)cout<<n%9<<endl;
                else cout<<9<<endl;
        }
    }
    return 0;
}


相关文章推荐

两种解法-树形dp+二分+单调队列(或RMQ)-hdu-4123-Bob’s Race

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4123 题目大意: 给一棵树,n个节点,每条边有个权值,从每个点i出发有个不经过自己走过的点的最远距...

Hdu 1181 变形课 两种解法 并查集+DFS

变形课 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others) Total Sub...

hdu 4619 Warm up 2 (两种解法:1.并查集 2.最大独立集)

Warm up 2 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Tota...

HDU 1548 A strange lift(最短路问题Dijkstra & bfs两种解法)

Problem Description There is a strange lift.The lift can stop can at every floor as you want, and t...

hdu 1025&hdu 1025 LIS(O(n*n)和O(n*log(n)))两种解法

FatMouse's Speed Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others...
  • opm777
  • opm777
  • 2014年01月24日 22:29
  • 1240

hdu 1372 Knight Moves BFS解法 + A*算法 两种解法AC

A friend of you is doing research on the Traveling Knight Problem (TKP) where you are to find the sh...

组合博弈游戏的解法 HDU

  • 2011年05月08日 23:21
  • 300KB
  • 下载

poj 1019 Number Sequence && hdu 1597 find the nth digit(二分,模拟)

两个题很相似,都是问你第i位是几,但排列的顺序有点不太一样. hdu 1597的每个单位是前一个单位后加个1-9中的一个循环添加; poj 1019的每个单位是前一个单位后加(i+1) 思路都一样...
  • CillyB
  • CillyB
  • 2017年02月27日 21:42
  • 151

Android拖动效果的两种解法

  • 2016年12月19日 11:46
  • 17.51MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:hdu1597的两种解法
举报原因:
原因补充:

(最多只允许输入30个字)