您的位置:首页 > 其它

HDU2608-0 or 1(数论+找规律)

2015-10-04 19:07 218 查看
一,题意:
  给定一个n,定义S(n)=T(1)+T(2)+T(3)+...+T(n),T(n)是n的所有因子之和,最后输出S(n)%2的值
  (因子就是所有可以整除这个数的数,不包括这个数自身)
二,思路:
  凡是"能被完全开方的"或者"被2整除后能完全开方"的数i,它的(T(i)%2)=1;
   i = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10;
   i*i = 1, 4, 9, 16, 25, 36, 49, 64, 81, 100,
  2*i*i = 2, 8, 18, 32, 50, 72, 98, 128, 162, 200;
  即 当n等于以上第一排或者第二排的数时, (T(n)%2)=1;
  ans = sqrt(n) + sqrt(n/2.0)
三,步骤:
  直接输入,输出。

#include<iostream>
#include<cmath>
using namespace std;
int main(){
int n , t ;
cin>>t;
while(t--){
cin>>n;
int ans = (int)sqrt(n)+(int)sqrt(n/2.0);
cout<<ans%2<<endl;
}
return 0 ;
}


View Code
版权声明:本文为博主原创文章,未经博主允许不得转载。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: