HDU 4279Number (打表找规律)

来源:互联网 发布:淘宝网限制登录申诉 编辑:程序博客网 时间:2024/06/06 20:47

题意:

给出了称之为“真实数字”的定义,询问要求的数字个数。

思路:

打表找规律。 sqrt有精度问题

#include<bits/stdc++.h>using namespace std;typedef long long ll;ll l, r, ans, kf;ll Sqrt(ll l,ll r,ll a) {      ll mid=(l+r)/2;      if(l>r)          return r;      if(a/mid>mid)          return Sqrt(mid+1,r,a);      else if(a/mid<mid)          return Sqrt(l,mid-1,a);      else          return mid;  }  ll get(ll k){if(k < 6) return 0; kf = Sqrt(1, k, k);if(kf % 2) return k / 2 - 1;else return k / 2 - 2;}int main(){int T, tot = 0;/*for(int i = 1; i <= 10000; i++){int cnt = 0;for(int j = 1; j <= i; j++) if(i % j && __gcd(i, j) != 1) cnt++;a[i] = tot += cnt % 2;}*/scanf("%d", &T);while(T--){scanf("%lld%lld", &l, &r);ll ansl = get(l - 1);ll ansr = get(r); printf("%lld\n", ansr - ansl);}return 0;}

原创粉丝点击