Description

飞飞特别喜欢平方数,可是他数学并不好,你能帮他计算 n 与 m 之间所有平方数之和吗?
提示:若一个整数的开方还是整数,它就是平方数。例如:4、9、16、25是平方数。n 和 m 均可能为 0 至 100000000 内的任意整数,n、m不一定有序。

Input

第一行 T 代表数据的组数。

接下来有 T 行,每行两个整数n,m (0 <= n, m <= 100000000)

Output

输出一个整数,代表所求区间内平方数之和。

Sample

Input

3
1 4
10 3
17 20

Output

5
13
0

先上代码:

#include <stdio.h>
int main()
{int t,n,m,j,a;scanf("%d",&a);while(a--){int i,sum=0;scanf("%d %d",&n,&m);if(n>m){t=n;n=m;m=t;}//先排序for(j=n; j<=m; j++){for(i=1; i<=j; i++){if(i*i==j){sum+=j;}}}printf("%d\n",sum);}return 0;
}

分析

根据题干要求,我们首先要找到平方数,然后将找到的平方数求和完成我们的题干要求。

那么,我们按照正向思维首先想到的是将这数个开方,判断他是不是平方数。但我们事先不知道开方函数是什么,那么我们凭借现有的知识可以解决吗?

sqrt();

一个数开方可以得到两个相同的整型数据,那么,我们可以用逆向思维找到这两个平方根。我们可以设整型变量i,用i*i判断是否等于要开方的数,如果成立就可以说明这个数就是平方数。上代码!

for(j=n; j<=m; j++)
{for(i=1; i<=j; i++){if(i*i==j){sum+=j;}}
}

那么我们看看用函数怎么解决(不要眼高手低,注意细节)

第一种

for(n; n<=m; n++)
{x=sqrt(n);if(x*x==n)sum+=n;
}
printf("%d\n",sum);

由于题干中说都是整数,所以开方出来的数也是整数。那么,当n=3时就无法判断x是不是1.732,况且他的得到的数x是1(整型数据)。那么我们就要用到上面的方法,将平方根x乘回去,根据是否等于n来判断n是否为平方数。

第二种

for(n; n<=m; n++)
{for(i=1; i<=sqrt(n); i++){if(i*i==n){sum+=n;}}
}

到此,我们可以发现两种方法是紧密联系的。那么我姑且把判断程序段这种思想成为反乘法(个人拙见),那么,我们看一下选拔赛的题目是否用到这种思想。

嘉然今天吃什么

#include <stdio.h>
int n, res;
int main()
{scanf("%d", &n);for (int a = 1; a <= n; a ++){int b = n - 2 * a;if (b % 3 == 0 && b >= 1 && b <= n){b /= 3;int s1 = 0, s2 = 0, t1 = a, t2 = b;while (t1){s1 += t1 % 10;t1 /= 10;}while (t2){s2 += t2 % 10;t2 /= 10;}if (a % s1 == 0 && b % s2 == 0){res ++;}}}printf("%d\n", res);
}

由于我个人的代码有些冗杂,我们看一下学长的代码。其中的表达式2×a+3×b=n,我们可以先求a,再用表达式解出b。表达式

但是!!!a又是从1开始判断,b的值肯定会出现浮点型的数据。那么,我们可以先不先除3(之后取余判断),或者将b用反乘法乘3,判断是否和之前的b相等,来判断b是否符合整数条件。

ps:本人大一新生,对程序略有拙见。发表此博客是希望相关解题思路对于大家后续做题有帮助

平方数及其相关思想(SDUT)相关推荐

  1. 平方数 (sdut oj)

    平方数 Time Limit: 1000MS  Memory Limit: 65536KB Problem Description 飞飞特别喜欢平方数,可是他数学并不好,你能帮他计算n与m之间所有平方 ...

  2. C#刷遍Leetcode面试题系列连载(4): No.633 - 平方数之和

    点击蓝字"dotNET匠人"关注我哟 加个"星标★",每日 7:15,好文必达! 前文传送门: 上篇文章中一道数学问题 - 自除数,今天我们接着分析 LeetC ...

  3. leetcode题解279-完全平方数

    问题描述 给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, -)使得它们的和等于 n.你需要让组成和的完全平方数的个数最少. 给你一个整数 n ,返回和为 n 的完全平方数的 最少 ...

  4. Python实现大自然数分解为最多4个平方数之和(1)

    问题描述:任意大自然数,总是能分解为最多4个平方数的和,所谓平方数是指它是一个自然数的平方.例如:72884 = 4^2 + 138^2 + 232^2,33788 = 1^2 + 3^2 + 17^ ...

  5. 数仓 建模思想之星型模型、雪花模型、星座模型

    数仓 建模思想之星型模型.雪花模型.星座模型 1. 背景 在大数据开发中,数据一般是分为事实表,维度表,实体表等表. 事实表顾名思义就是记录实际发生的事情如订单表,优惠券使用表等等. 维度表,顾名思义 ...

  6. 斜率优化DP 与数形结合思想

    前言 最近才入了DP优化的大坑-- 发现斜率优化DP还是很有用的 下面会结合一道例题,同时讲解斜率优化DP 正文 先看一下例题:HDU3507 题目大意:有一串数列,要把它分割成若干段 每一段的代价是 ...

  7. Uva 11542 乘积是平方数

    题目链接:http://vjudge.net/contest/142484#problem/A 这个题目也是2016年CCPC网赛上面的题目,当时我是不会做的,但是大牛们都知道这是一个原题,最后给一队 ...

  8. LeetCode Valid Perfect Square(是否是平方数)

    题意:给出一正整数,不用 sqrt函数,判断该数是否是平方数 思路: 第一种,连续奇数和为平方数 代码如下: public class Solution {public boolean isPerfe ...

  9. hdu4982 暴搜+剪枝(k个数和是n,k-1个数的和是平方数)

    题意:       给你两个数n,k问你是否怎在这样一个序列:      (1)这个序列有k个正整数,且不重复.      (2)这k个数的和是n.      (3)其中有k-1个数的和是一个平方数. ...

最新文章

  1. Knative 入门系列1:knative 概述
  2. python3.6运行界面_python3.6 +tkinter GUI编程 实现界面化的文本处理工具
  3. [Java] 接口(Interface)与 抽象类 (Abstract)使用规则和区别
  4. forum tribune
  5. 探索Julia(part12)--函数组合及管道
  6. [转]“UPA 中国”北京行业聚会笔录
  7. mysql 自定义函数入门_【转】MYSQL入门学习之十三:自定义函数的基本操作
  8. JQGrid 嵌套字表, json数据
  9. IEC61850报告服务(报文解析)
  10. Python沙雕故事生成器
  11. Native method not found: com.autonavi.amap.mapcore.MapProjection.nativeLonLat2Geo:(DDLcom/autonavi/a
  12. 各地区磁偏角和磁倾角查询网址及方法
  13. 流行的后台管理系统模板总结
  14. Python爬虫:Scrapy-redis分布式爬虫讲解
  15. 麒麟V10系统安装教程
  16. ABB机器人ProgramEditor(程序编辑器)调试菜单详解
  17. 深入理解iOS APP启动过程
  18. android如何打开apk文件怎么打开方式,.apk文件用苹果系统怎么打开_apk文件苹果怎么打开...
  19. 100000以内的质数表
  20. 中医移动医疗_搜狗切入移动医疗领域 推中医识方APP

热门文章

  1. 一套监控EMC VNX存储的小脚本(可用于Zabbix)
  2. emc存储java过期,干货来了!VNX证书过期解决方案,再也不怕VXN证书过期了!
  3. win 10 系统UE工具栏突然消失了
  4. python统计成绩数据中如何去掉表头,python 从 CSV 文件中删除表头
  5. java 递归查找,Java程序使用递归查找自然数之和
  6. jQuery框架简介
  7. scale改变元素尺寸
  8. 苹果电脑双系统怎么切换 苹果电脑双系统的切换方法
  9. mysql btree索引概述
  10. ftp lftp 客户端设置_ftp与lftp命令使用