Time Limit: 1 second

Memory Limit: 128 MB

【问题描述】

任何一个整数N都能表示成另外两个整数a和b的平方差吗?如果能,那么这个数N就叫做Couple number。你的工作就是判断一个数N是不是Couple number。

【输入格式】

仅一行,两个长整型范围内的整数n1和n2,之间用1个空格隔开。

【输出格式】

输出在n1到n2范围内有多少个Couple number。 注意:包括n1和n2两个数,且n1<n2,n2 -="" n1="" <="10" 000="" 000。=""

【数据规模】

Sample Input1

  1. 1 10
  1. Sample Output1

  2. 7
  1. 【题解】
  1. 这是道数论的题目;需要考虑一番。
  1. 首先假设当前判断的数字是i;
  1. i=x^2-y^2;利用平方差公式可化为
  1. i=(x+y)*(x-y);
  1. 然后令a=(x+y),b=(x-y);
  1. a=x+y ···①
  1. b=x-y ···②
  1. ①+②
  1. x=(a+b)/2;
  1. ①-②
  1. y=(a-b)/2;
  1. 要让正数x,y存在。则a+ba-b一定是两个偶数。则a,b一定是同奇数或同偶数。
  1. i=a*b;
  1. 即让乘的ab同奇数或同偶数。
  1. 首先如果i为奇数。则一定可以。
  1. 因为i=1*i1为奇数,i也为奇数!
  1. 然后是偶数。
  1. 偶数有两类。一类是这样的
  1. 2*(2n+1),2*(2n);
  1. 这两类中后者是一定可以的。因为2为偶数,(2n)也为偶数。则满足ab同奇或同偶。
  1. 然后前者是2*一个奇数的形式,奇数是不可能由一个偶数乘出来的,所以(2n+1)不能分解成2*(...)的形式。
  1. 这就确定了前者所属的偶数类型只能由一个奇数乘一个偶数得来。
  1. 这是不符合题意的。
  1. 然后如果概括一下就是:奇数+4的倍数(包括0);
  1. 如果出现负数按照正数的处理即可。x^2-y^2中,xy可以调换顺序啊!
  1. 【代码】
  1. #include <cstdio>
  2. int n1, n2,s,t,tot = 0;
  3. int main()
  4. {
  5. 	scanf("%d%d", &n1, &n2); //输入区间范围。
  6. 	s = n1; t = n2;//确定起点和终点
  7. 	if (n1 < 0 && n2 < 0)//如果都小于0,则取反调换顺序
  8. 		s = -n2, t = -n1;
  9. 	if (n1 < 0 && n2>=0)//如果一个小于0一个大于等于0(注意等于),则分成两段[n1..0)[0,n2]
  10. 	{
  11. 		s = 0; t = n2;
  12. 		for (int i = 1; i <= -n1; i++)//先加[n1..0)这一段。
  13. 			if ((i % 2) == 1 || (i % 4) != 2)//奇数和4的倍数。
  14. 				tot++;
  15. 	}
  16. 	for (int i = s; i <= t; i++)//执行需要另外加的部分。
  17. 		if ((i % 2) == 1 || (i % 4) != 2)
  18. 			tot++;
  19. 	printf("%d\n", tot);
  20. 	return 0;
  21. }
  1.  
  1.  

  1.  

Sample Output1

  1. 7

【u020】Couple number的更多相关文章

  1. 【POJ2104】【HDU2665】K-th Number 主席树

    [POJ2104][HDU2665]K-th Number Description You are working for Macrohard company in data structures d ...

  2. 【SPOJ】NUMOFPAL - Number of Palindromes(Manacher,回文树)

    [SPOJ]NUMOFPAL - Number of Palindromes(Manacher,回文树) 题面 洛谷 求一个串中包含几个回文串 题解 Manacher傻逼题 只是用回文树写写而已.. ...

  3. 【LeetCode】Largest Number 解题报告

    [LeetCode]Largest Number 解题报告 标签(空格分隔): LeetCode 题目地址:https://leetcode.com/problems/largest-number/# ...

  4. 【LeetCode】792. Number of Matching Subsequences 解题报告(Python)

    [LeetCode]792. Number of Matching Subsequences 解题报告(Python) 作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://f ...

  5. 【LeetCode】673. Number of Longest Increasing Subsequence 解题报告(Python)

    [LeetCode]673. Number of Longest Increasing Subsequence 解题报告(Python) 标签(空格分隔): LeetCode 题目地址:https:/ ...

  6. 【LeetCode】Single Number I & II & III

    Single Number I : Given an array of integers, every element appears twice except for one. Find that ...

  7. 【HDU3948】 The Number of Palindromes (后缀数组+RMQ)

    The Number of Palindromes Problem Description Now, you are given a string S. We want to know how man ...

  8. 【leetcode78】Single Number II

    题目描述: 给定一个数组,里面除了一个数字,其他的都出现三次.求出这个数字 原文描述: Given an array of integers, every element appears three ...

  9. 【leetcode79】Single Number III

    题目描述: 给定一个数组,里面只有两个数组,只是出现一次,其余的数字都是出现两次,找出这个两个数字,数组形式输出 原文描述: Given an array of numbers nums, in wh ...

随机推荐

  1. Java学习笔记四

    1.简介.进程和线程:简单的说就是进程负责为程序开辟内存空间,线程负责具体的执行单元(执行路径). 一个进程中可以有多个执行路径,称为多线程.CPU一次只能执行一个进程,但是一个进程内部可以有多个线程 ...

  2. .NET Entity Framework入门操作

    Entity Framework是微软借鉴ORM思想开发自己的一个ORM框架. ORM就是将数据库表与实体对象(相当于三层中的Model类)相互映射的一种思想. 最大的优点就是非常方便的跨数据库平台. ...

  3. Docker+Mongodb

    原文:Docker+Mongodb docker search mongodb docker run -d -p 2701:27017 -v /usr/mongodb/data:/data/db  - ...

  4. touch、touchevent-事件总结

    1.废话不多说,直接上代码,如下 package com.example.mygestrue; import android.support.v7.app.ActionBarActivity; imp ...

  5. grep 过滤器基础

    grep是一种文本搜索工具,能使用正则表达式搜索文本,并把匹配的行显示出来. grep 选项 模式 文件 grep "bash" /etc/passwd 将/etc/passwd下 ...

  6. Servlet的异常处理机制

    一 声明式异常处理   在web.xml中对声明对各种异常的处理方法. 通过 <error-page>元素来声明. 此元素的结构如下:                    +------ ...

  7. 对于学习apache软件基金会顶级项目源码的一点思路(转)

    ASF的开源项目,为软件行业贡献了太多好的产品和软件思维.学习ASF的项目源码能很大的提升自身的能力.程序运行在服务器上的流程:执行启动脚本(start.sh) -> 指向程序的主方法 -> ...

  8. Android 一个异步SocketHelper

    发送流程:首先定义一个缓冲池,发送数据时仅仅是将待发送的数据加入到缓冲池中,再由后台的工作线程从缓冲池中取得待发送数据进行发送.可能某些情况下在数据发送完成时需要做一些处理(比如写日志),便定义了一个 ...

  9. 【2017 ACM-ICPC 亚洲区(乌鲁木齐赛区)网络赛 G】Query on a string

    [链接]h在这里写链接 [题意] 让你维护字符串的一段区间内T子串的个数. [题解] 因为t不大,所以. 暴力维护一下a[i]就好. a[i]表示的是S串从i位置开始,能和T串匹配几个字符. 用树状数 ...

  10. 9.3 Binder系统_驱动情景分析_服务获取过程

    4. 服务获取过程 test_client客户端: (1)在用户态先构造name=“hello”的数据(服务的名字是hello),调用ioctl发送数据给service_manager(handle= ...