zoukankan      html  css  js  c++  java
  • hdu 4342 History repeat itself(数学题)

    题目链接:hdu 4342 History repeat itself

    题意:

    让你找第a个非完全平方数m,并且求前m个数的开方向下取整的和。

    题解:

    第一个问题:

    假设第a个非平方数是X,X前面有n个平方数,则n*n<X<(n+1)*(n+1);
    n*n前面的非平方数的个数是n*n-n;
    首先先根据a求n,n是满足不等式  n*n-n<a的最大正整数。
    不等式的解是:
    (1+sqrt(1+4*a))/2;必需对这个数上取整,然后减一就是n了。
    然后第a个非平方数就是  n*n+(a-n*n+n)=a+n。
    第二个问题:
    我们观察可以发现,第二个问题是有规律的,因为是开方向下取整,所以在两个完全平方数之前这段区间的值都是一样的,所以有公式
    (2*i-1)*(i-1),然后暴力加一下就行了,然后这只是前面n*n-1的,对于n*n到a+n的单独算一下就行,当然你也可以向kuangbin那样直接推公式。
     1 #include<bits/stdc++.h>
     2 #define F(i,a,b) for(int i=a;i<=b;++i)
     3 using namespace std;
     4 
     5 int main()
     6 {
     7     int t;
     8     scanf("%d",&t);
     9     while(t--)
    10     {
    11         long long a,ans1,ans2,n;
    12         scanf("%lld",&a);
    13         n=ceil((1+sqrt(1+4*a))/2)-1;
    14         ans1=n+a;
    15         ans2=0;
    16         F(i,2,n)ans2+=(long long)(2*i-1)*(i-1);
    17         printf("%lld %lld
    ",ans1,ans2+(a+n-n*n+1)*n);
    18     }
    19     return 0;
    20 }
    View Code
  • 相关阅读:
    CTS2019 题解
    CTS2019 & APIO2019 游记
    WF 2019
    BZOJ 2560 及其加强
    UOJ 191
    SCOI2019 退役记
    HTML5 本地存储
    js数据类型
    解析json成javascript对象
    http状态码;
  • 原文地址:https://www.cnblogs.com/bin-gege/p/6204205.html
Copyright © 2011-2022 走看看