hdu2608:0 or 1
来源:互联网 发布:卡宾淘宝旗舰店 编辑:程序博客网 时间:2024/06/18 04:56
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=2608
好像有人用打表也过了。我是借鉴别人写了一半的推导公式推导出来的:
用数论推出规律来:
(1):若n为奇数且为平方数,则T(n)=1;
(2):若n为奇数且不为平方数,则T(n)=0;
(3):若n为偶数,则n可表示为:
n=2^p*X(X为奇数)
T(n)=T(2^p*X)=(T(X)+2*T(X)+2^2*T(X)+.......+2^p*T(X))=T(X)*(2^(p+1)-1)
1)若X为(1),则T(n)=1;
2)若X为(2),则T(n)=0;
3)若p为偶数,则当X为(1)时,T(n)=1,否则T(n)=0->若n为偶数且为平方数时,T(n)=1;
3)若p为奇数,则p-1为偶数,则T(n)=T(X)*(2^p-1)+2^p*T(X),若X为(1),则T(n)=1,否则T(n)=0,->若n为偶数,且n为平方数的2倍时,T(n)=1;
综上:若n为平方数或是平方数的2倍时,则T(n)=1,否则T(n)=0;
好了,给出我的AC代码吧:
#include<iostream>#include<algorithm>#include<cmath>using namespace std;int main(){ int n; int T; cin >> T; while (T--){ cin >> n; int a, b; int c1 = (int)sqrt((double)n); int d = (c1*c1); int c2 = c1; while (d * 2 > n){ c2--; d = c2*c2; } a = n - c1 - c2; b = c1 + c2; cout << (b % 2) << endl; } return 0;}
0 0
- HDU2608 0 or 1
- hdu2608 0 or 1
- hdu2608:0 or 1
- hdu2608 0 or 1
- 0 or 1(hdu2608)数学题
- hdu2608 0or1(找规律)
- hdu2608之数论推理
- hdu2608 数论,规律
- 0 or 1 ?
- I - 0 or 1
- 0 or 1
- 0 or 1
- hdu4370 0 or 1
- 0 or 1 HDU
- hdu 2608 0 or 1
- hdu 4370 0 or 1
- HDU 4370 0 or 1
- Hdu 2608 (0 or 1)
- 黑马程序员-----java基础IO流<三>
- CSS3 线性渐变(linear-gradient)
- YII用户注册和用户登录(五)之进行session和cookie分析 ,并在前后区分session和cookie
- 求最大质因子
- JAVA中冒泡法排序和选择法排序
- hdu2608:0 or 1
- Next Permutation
- STM32之启动文件理解
- hadoop(一)
- DedeCMS采集回来的数据正文内容为空的解决办法
- 32位cloud compare编译
- How to use sessions
- Web.config配置文件详解
- Directx Sample Browser中的DXUT例子Failed Creating Direct3d Device 的解决方案