精华内容
下载资源
问答
  • 第四部分是每日题,每日题是在交流群(包括微信 qq)里进行的一种活动,大家一起 解一道题,这样讨论问题更加集中,会得到更多反馈。而且 这些题目可以被记录下来,日后会进行筛选添加仓库题解模块。 ...
  • 202.快乐数

    2020-06-21 00:07:31
    「快乐数」定义为:对于个正整数,每次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不 1。如果 可以变为 1,那么这个数就是快乐数。 如果 n 是...

    题目

    编写一个算法来判断一个数 n 是不是快乐数。

    「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果 可以变为 1,那么这个数就是快乐数。

    如果 n 是快乐数就返回 True ;不是,则返回 False 。

    思考

    看到这道题,第一时间不能确定的是,循环的终止条件。因为计算个位的平方和是简单的,知道了怎么停下来,这道题就解完了。看了下题解,主要的思想是,证明求平方和的这个过程,是循环的,当发现循环的时候,就可以终止程序的循环,而且如果平方和为1的时候,后面的平方和也都为1,所以也是进入了循环。
    当数字很大的时候,各个位的数的平方和,也只不过是一些一位的数字和,肯定会比原来的数字小,这样就保证了,位平方和不会无限的变大。总会在某一时刻,位平方和在之前出现过。只要有两个数相同了,那么就构成了一个循环,如果数字不为1,那么再没有可能成为1。
    如果寻找两个数字相同呢?一个方法是创建一个集合,每次计算完看看集合中是否出现过,没有出现过就放入集合,直到出现。另一个方法是,将每一次的平方和当成链表的一个节点,假想有快慢指针。快指针每次先计算出平方和n1n_1,再计算出n1n_1的平方和n2n_2,慢指针每次往前指向一个数。想象如果该链表有个环,意思就是快指针计算出一个数之前算出来过,那么当快慢指针都进入环的时候,快指针每次走两步,慢指针每次走一步,那么快慢指针每次都会算短1的距离,总会相遇。相遇时快慢指针指向的数相同,这就代表该数是重复的,从该数走过的一圈就是一个循环。

    代码

    class Solution {
    public:
        bool isHappy(int n) {
            if ( n == 0 ) return false;
    
            int fast = 0, slow = 0;
            vector<int> arr;
            arr.push_back( n );
    
            do {
                fast += 2;
                slow += 1;
    
                sumOfSquare( n );
                arr.push_back( n );
                sumOfSquare( n );
                arr.push_back( n );
    
            } while ( arr[fast] != arr[slow] );
    
            if ( arr[fast] == 1 ) return true;
    
            return false;
        }
    
        void sumOfSquare( int& n ) {
            int sum = 0;
            int mod = 0;
    
            while ( n ) {
                mod = n % 10;
                n /= 10;
                sum += mod * mod; 
            }
            
            n = sum;
    
            return;
        }
    };
    
    展开全文
  • HDU 5073 思维

    2015-10-13 19:05:10
    HDU 5073 题目链接: ...题意: 给出n行星位置,每个行星质量为1....最多可以移动m个行星。...容易知道最后剩下的n-m个行星在原来数轴中连续为最佳,故问题简化为怎么求一段含有n-m个行星区间内行星质心距离平

    HDU 5073
    题目链接:
    http://acm.hdu.edu.cn/showproblem.php?pid=5073
    题意:
    给出n行星的位置,每个行星质量为1.
    最多可以移动m个行星。问移动后他们到他们质心距离平方的和最小是多少。
    思路:
    移动可以看成删除。
    容易知道最后剩下的n-m个行星在原来的数轴中连续为最佳,故问题简化为怎么求一段含有n-m个行星的区间内行星到质心距离平方的和的最小值。
    因为距离和=sigma((x-d)*(x-d)),d为质心坐标,x为行星坐标,所以可以用前缀和的方式处理。
    源码:

    #include <cstdio>
    #include <cstring>
    #include <cmath>
    #include <cstdlib>
    #include <algorithm>
    #include <iostream>
    using namespace std;
    #define inf (1000000000000)
    const int MAXN = 50000 + 5;
    double pos[MAXN];
    double sum[MAXN], two[MAXN];
    bool cmp(int a, int b){return a < b;}
    int main()
    {
    //    freopen("D.in", "r", stdin);
        int t;
        scanf("%d", &t);
        while(t--){
            int n, m;
            scanf("%d%d", &n, &m);
            for(int i = 1 ; i <= n ; i++)
                scanf("%lf", &pos[i]);
            if(n == m || n == m + 1){
                printf("0\n");
                continue;
            }
            sort(pos + 1, pos + n + 1, cmp);
            sum[0] = two[0] = 0;
            for(int i = 1 ; i <= n ; i++){
    //            printf("pos[%d] = %f\n", i, pos[i]);
                sum[i] = sum[i - 1] + pos[i];
                two[i] = two[i - 1] + pos[i] * pos[i];
    //            printf("sum[%d] = %f, two[%d] = %f\n", i, sum[i], i, two[i]);
            }
            double d1 = sum[n - m] / (n - m);
            double ans = two[n - m] - 2 * sum[n - m] * d1 + d1 * d1 * (n - m);
    //        printf("d1 = %f\n", d1);
    //        printf("ans = %f\n", ans);
            double d2;
            double pre = ans;
            for(int i = n - m + 1; i <= n ; i++){
                double d2 = (sum[i] - sum[i - n + m]) / (n - m);
                double tans = two[i] - two[i - n + m] - 2 * (sum[i] - sum[i - n + m]) * d2 + d2 * d2 * (n - m);
    //            printf("d2 = %f\n", d2);
    //            printf("first = %f, second = %f\n", two[i] - two[i - n + m], sum[i] - sum[i - n + m]);
    //            printf("i = %d, tans = %f\n", i, tans);
                ans = min(ans, tans);
            }
            printf("%.10f\n", ans);
        }
        return 0;
    }
    展开全文
  • 2.2.5 写个程序, 要求功能:出用1,2,5这三个数不同个数组合的和为100组合个数 2.2.6 实现个函数,把个字符串中字符从小写转为大写 2.2.7 随机输入个数,判断它是不是对称数(回文数)(如3,121,...
  • 题目分析:我也不想说什么了,把一道简单题想复杂了。开始想错思路,以为...然后想莫比乌斯反演(好像时间过不去呀),而且我也不知道怎么log(n)组合数(因为不能预处理阶乘到n),还上网看了个log(n)阶乘,

    题目传送门:https://www.luogu.org/problem/show?pid=3172

    题目分析:我也不想说什么了,把一道简单的题想复杂了。一开始想错思路,以为提取出k和k平方的个数,两次组合数搞容斥。结果发现错的离谱(2k,3k等情况没有讨论)。然后想莫比乌斯反演(好像时间过不去呀),而且我也不知道怎么log(n)求组合数(因为不能预处理阶乘到n),还上网看了个log(n)求阶乘,结果发现……我看错题了!可以重复选,这样就是个快速幂了。然而时间复杂度还是过不去,最后上网看了题解,发现做法好神啊。(%%%:http://blog.csdn.net/your_own_name/article/details/52801442

    CODE:

    #include<iostream>
    #include<string>
    #include<cstring>
    #include<cmath>
    #include<cstdio>
    #include<cstdlib>
    #include<stdio.h>
    #include<algorithm>
    using namespace std;
    
    const int maxn=100100;
    const int M=1000000007;
    
    int num[maxn];
    int n,k,l,h;
    
    int Fast_power(int a,int x)
    {
    	if (x==1) return a;
    	long long mid=Fast_power(a,x>>1);
    	mid=mid*mid%M;
    	if (x&1) mid=mid*a%M;
    	return (int)mid;
    }
    
    int main()
    {
    	freopen("c.in","r",stdin);
    	freopen("c.out","w",stdout);
    	
    	scanf("%d%d%d%d",&n,&k,&l,&h);
    	l=(l+k-1)/k;
    	h=h/k;
    	for (int i=h-l; i>=1; i--)
    	{
    		int x=(l+i-1)/i-1;
    		int y=h/i-x;
    		num[i]=Fast_power(y,n);
    		num[i]=(num[i]-y+M)%M;
    		for (int j=2; i*j<=h-l; j++) num[i]=(num[i]-num[i*j]+M)%M;
    	}
    	if ( l==1 && h>=1 ) num[1]=(num[1]+1)%M;
    	printf("%d\n",num[1]);
    	
    	return 0;
    }
    展开全文
  • 好多题解都说是水题,怎么是水题呐,我感觉这道题挺好嘞 打表,有坑,咱也不知道为啥起名预处理,嘛…有预处理吧 小伙伴商量了一下这个题坑 ...然后让你1 — n 每个数平方的倒数、 由于计...

    好多题解都说是水题,怎么是水题呐,我感觉这道题挺好嘞

    打表,有坑,咱也不知道为啥起名预处理,嘛…有预处理吧

    和我的小伙伴商量了一下这个题的坑

    直接上图吧,懒得打字了
    在这里插入图片描述
    她做了一下午,我不到半小时,默哀默哀…(哈哈哈哈)
    应该是编译器的问题,而且oj还卡,她做出来最后…

    在这里插入图片描述
    在这里插入图片描述内心毫无波澜甚至有点想笑。

    啊,好像扯远了,再谈谈坑。
    题意就是给你个整数n
    然后让你求1 — n 每个数平方的倒数和、

    由于计算机有限的,而且保留5位小数。1/k^2 会在某个数收敛,到一定数的时候加不加都不影响结果,之后的数的平方倒数都可以看作0.

    这里我作弊了,要么我为什么a的快
    在这里插入图片描述
    在这里插入图片描述

    其次这个n不知道多大,有可能心狠毒辣的1000位数…嘛,也不可能吧。所以最好要用字符串输入,万一太大造成错误也不好说。

    我也参考了大佬的题解,看到了一个超级好用的函数,虽然不知道具体还能干什么,但是可以吧字符串转换成数字…嘛,终于不在苦兮兮的用循环把字符串搞成数字溜!
    在这里插入图片描述大佬的代码…我主要就是当日记写着玩玩。所以废话挺多的。
    https://blog.csdn.net/lzh823046544/article/details/52583478
    不愿意看大佬的,看我和大佬神似的也行(= w =)

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    
    using namespace std;
    
    double a[1000000+20];
    char s[10000000];
    
    int main(){
    
        a[0] = 0.0;
        double ans = 0;
        for(int i = 1; i <= 1000000; ++i){
            ans += (1.0/double(double(i)*double(i)));
            a[i] = ans;
        }
    
        long long n;
        while(~scanf("%s",s)){
            if(strlen(s) > 7) n = 1000000;
            else
                sscanf(s,"%lld",&n);
            if(n >= 1000000) n = 1000000;
            printf("%.5f\n", a[n]);
        }
        return 0;
    }
    
    
    
    
    展开全文
  • 东三省赛怕是也要推迟,论文,,,结课作业报告也就十几页,别太少,几周,深圳杯推迟了作业话下周就出随机存储模型Ss策略随机人口模型随机服务模型随机模拟聚类分析开头离差平方和(欧式距离) 作业话下周就出 ...
  • 100个人高考成绩平均分与全省所有考生成绩平均分在占用时间内存存储上有非常大差异,我们自然追求高效率低存储算法来解决问题。 2.6.1正确性 22 2.6.2可读性 23 2.6.3健壮性 23 2.6.4时间效率高...
  • 100个人高考成绩平均分与全省所有考生成绩平均分在占用时间内存存储上有非常大差异,我们自然追求高效率低存储算法来解决问题。 2.6.1正确性 22 2.6.2可读性 23 2.6.3健壮性 23 2.6.4时间效率高...
  • 大话数据结构

    2019-01-10 16:35:22
    100个人高考成绩平均分与全省所有考生成绩平均分在占用时间内存存储上有非常大差异,我们自然追求高效率低存储算法来解决问题。 2.6.1正确性 22 2.6.2可读性 23 2.6.3健壮性 23 2.6.4时间效率高...
  • 大话数据结构 程杰

    2018-09-01 10:06:43
    100个人高考成绩平均分与全省所有考生成绩平均分在占用时间内存存储上有非常大差异,我们自然追求高效率低存储算法来解决问题。 2.6.1正确性 22 2.6.2可读性 23 2.6.3健壮性 23 2.6.4时间效率高...
  • 2.6.1 正确性 22 2.6.2 可读性 23 2.6.3 健壮性 23 2.6.4 时间效率高存储量低 23 2.7 算法效率度量方法 24 随着n值越来越大,它们在时间效率上差异也就越来越大。好比有些人每天都在学习,而另一些人,打打...
  • 大话数据结构-程杰

    2014-07-13 23:45:52
    100个人高考成绩平均分与全省所有考生成绩平均分在占用时间内存存储上有非常大差异,我们自然追求高效率低存储算法来解决问题。 2.6.1 正确性 22 2.6.2 可读性 23 2.6.3 健壮性 23 2.6.4 时间...
  • C++程序员面试宝典

    热门讨论 2013-04-01 13:36:19
    求职者要想成功应聘,不仅需要扎实基本功,还需要经受情商智商考验。 本书通过380余个面试题,对企业招聘C/C++程序员需要掌握知识进行了系统、全面总结,以帮助读者进行充分面试准备,在激烈竞争中...
  • 200 示例:求一个数的平方 第十九章 C/C++中的字符串 201 理解字符变量类型 202 理解CC++语言存储字符串的方式 203 理解NUL字符(\0) 204 理解使用字符串指针 205 获取字符串的大小 第二十章 声明字符串 206 ...
  • 200 示例:求一个数的平方 第十九章 C/C++中的字符串 201 理解字符变量类型 202 理解CC++语言存储字符串的方式 203 理解NUL字符(\0) 204 理解使用字符串指针 205 获取字符串的大小 第二十章 声明字符串 206 ...
  • 200 示例:求一个数的平方 第十九章 C/C++中的字符串 201 理解字符变量类型 202 理解CC++语言存储字符串的方式 203 理解NUL字符(\0) 204 理解使用字符串指针 205 获取字符串的大小 第二十章 声明字符串 206 ...
  • 200 示例:求一个数的平方 第十九章 C/C++中的字符串 201 理解字符变量类型 202 理解CC++语言存储字符串的方式 203 理解NUL字符(\0) 204 理解使用字符串指针 205 获取字符串的大小 第二十章 声明字符串 206 ...
  • 世界500强面试题.pdf

    2019-11-01 14:33:26
    1.4.5. 求一个矩阵中最大二维矩阵(元素最大) ........................................ 86 1.4.6. 强大和谐 ........................................................................................ 90 ...

空空如也

空空如也

1
收藏数 20
精华内容 8
关键字:

一到n的平方和怎么求