编程小技巧

简介:

1.判断一个自然数是否是某个数的平方?(其实就是判断这个数一定是奇数相加的)

由于
(n+1)^2
=n^2 + 2n + 1,
= ...
= 1 + (2*1 + 1) + (2*2 + 1) + ... + (2*n + 1)
注意到这些项构成了等差数列(每项之间相差2)。
所以我们可以比较 N-1, N - 1 - 3, N - 1 - 3 - 5 ... 和0的关系。
如果大于0,则继续减;如果等于0,则成功退出;如果小于 0,则失败退出。
复杂度为O(n^0.5)。不过方法3中利用加减法替换掉了方法1中的乘法,所以速度会更快些。

例如:3^2 = 9 = 1 + 2*1+1 + 2*2+1 = 1 + 3 + 5

4^2 = 16 = 1 + 2*1 + 1 + 2*2+1  + 2*3+1

[cpp]  view plain copy
  1. int square(int n)    
  2. {    
  3.     int i = 1;    
  4.     n = n - i;    
  5.     while( n > 0 )    
  6.     {    
  7.         i += 2;    
  8.         n -= i;    
  9.     }    
  10.     if( n == 0 )        //是某个数的平方    
  11.         return 1;    
  12.     else                //不是某个数的平方    
  13.         return 0;    
  14. }    


2.如何判断一个元素的奇偶性?

[cpp]  view plain copy
  1. //判断元素的奇偶性  
  2. bool isEven(int data)  
  3. {  
  4.     return((data & 1) == 0 ? true : false);  
  5. }  

[html]  view plain copy
  1. if((exponent & 0x1) == 1) //判断是否为奇数  

3.判断一字符串是否是对称的。
[cpp]  view plain copy
  1. bool IsSymmetrical(char *pBegin , char *pEnd)  
  2. {  
  3.     if(pBegin == NULL || pEnd == NULL || pBegin > pEnd)  
  4.         return false;  
  5.   
  6.     while(pBegin < pEnd)  
  7.     {  
  8.         if(*pBegin != *pEnd)  
  9.             return false;  
  10.   
  11.         pBegin++;  
  12.         pEnd--;  
  13.     }  
  14.   
  15.     return true;  
  16. }  


 

4.输入一个整数n,求从1到n这个整数的十进制表示中1出现的次数。例如输入12,从1到12这些整数中包含1的数字有1,10,11和12,1一共出现了5次。

[cpp]  view plain copy
  1. int NumberOf1(unsigned int n)  
  2. {  
  3.     int number = 0;  
  4.     while(n)  
  5.     {  
  6.         if(n % 10 == 1)  
  7.             number++;  
  8.   
  9.         n = n / 10;  
  10.     }  
  11.   
  12.     return number;  
  13. }  
  14.   
  15. int NumberOf1Between1AndN(unsigned int n)  
  16. {  
  17.     int number = 0;  
  18.   
  19.     for(unsigned int i = 1 ; i <= n ; ++i)  
  20.         number += NumberOf1(i);  
  21.   
  22.     //cout<<number<<endl;  
  23.     return number;  
  24. }  


实现代码:

[cpp]  view plain copy
  1. #include<iostream>  
  2. using namespace std;  
  3.   
  4. int NumberOf1(unsigned int n)  
  5. {  
  6.     int number = 0;  
  7.     while(n)  
  8.     {  
  9.         if(n % 10 == 1)  
  10.             number++;  
  11.   
  12.         n = n / 10;  
  13.     }  
  14.   
  15.     return number;  
  16. }  
  17.   
  18. void NumberOf1Between1AndN(unsigned int n)  
  19. {  
  20.     int number = 0;  
  21.   
  22.     for(unsigned int i = 1 ; i <= n ; ++i)  
  23.         number += NumberOf1(i);  
  24.   
  25.     cout<<number<<endl;  
  26. }  
  27.   
  28. int main()  
  29. {  
  30.     int n = 12;  
  31.     NumberOf1Between1AndN( n);  
  32.   
  33.     return 0;  
  34. }  


 5.判断一个数是否是素数。

[cpp]  view plain copy
    1. bool isPrime(int n)  
    2. {   
    3.     for(int i = 2 ; i <= sqrt(n) ; i++)  
    4.     {  
    5.         if(n % i == 0)  
    6.             return false;  
    7.     }  
    8.     return true;  
    9. }  






本文转自夏雪冬日博客园博客,原文链接:http://www.cnblogs.com/heyonggang/p/3386378.html,如需转载请自行联系原作者
目录
相关文章
|
11月前
|
传感器 安全 智能硬件
柔性电池技术:可弯曲的能源解决方案
【10月更文挑战第12天】柔性电池技术采用轻质、可弯曲材料,具备高度柔韧性、轻薄便携、安全性能及高能量密度等特点,正革新传统电池领域。其广泛应用前景涵盖军事装备、无人机、可穿戴设备、智能医疗器械及太阳能领域,如英国“维图斯”士兵系统的可穿戴作战装备、智能手表和柔性太阳能电池等。当前,该技术正处于快速发展阶段,新材料与工艺不断涌现,未来将引领科技领域的能源革命。
|
传感器
同步器的介绍
一、同步器的原理 同步器是一种电子电路,主要用于实现信号同步。它的工作原理是通过对输入信号进行采样和比较,判断信号的相位和频率,从而实现对信号的同步和输出。同步器可以分为基于时钟的同步器和基于相位的同步器两种类型。 1. 基于时钟的同步器 基于时钟的同步器是一种常见的同步器类型,它的工作原理是通过时钟信号对输入信号进行采样和比较,从而实现对信号的同步和输出。基于时钟的同步器主要由时钟源、采样电路和比较器等组成。时钟源用于产生时钟信号,采样电路用于对输入信号进行采样,比较器用于比较采样信号和时钟信号的相位和频率。 2. 基于相位的同步器 基于相位的同步器是另一种常见的同步器类型,它的工作原理
417 0
|
8月前
|
传感器 人工智能 数据可视化
可视化管理如何助力企业降本增效?
生产可视化管理是企业数字化转型的关键,通过数据图形化呈现,将复杂信息转化为直观内容,提升生产效率、降低成本并优化决策。核心特点包括实时性、直观性和可操作性,帮助企业快速掌握生产动态,发现问题并及时优化。板栗看板等工具提供灵活配置、实时数据更新和数据分析支持,助力企业实现高效管理。未来,结合AI与物联网技术,生产可视化将更加智能化,为企业创造更大价值。
151 9
|
网络协议 安全 网络安全
2024年江苏省职业院校技能大赛信息安全管理与评估 第一阶段学生组(样卷)
2024年江苏省职业院校技能大赛信息安全管理与评估 第一阶段学生组(样卷)
|
XML Java 数据库
配置applicationContext.xml文件
配置applicationContext.xml文件
|
9月前
|
人工智能 数据安全/隐私保护 数据中心
“芯片围城”下国产AI要放缓?答案或截然相反
12月2日,美国对华实施新一轮出口限制,将140余家中国企业列入贸易限制清单。对此,中国多个行业协会呼吁国内企业谨慎选择美国芯片。尽管受限企业表示影响有限,但此事件引发了关于AI领域芯片供应的担忧。华为云推出的昇腾AI云服务,提供全栈自主的算力解决方案,包括大规模算力集群、AI框架等,旨在应对AI算力需求,确保算力供给的稳定性和安全性,助力中国AI产业持续发展。
139 3
|
Java 测试技术
滚雪球学Java(09-2):Java中的关系运算符,你真的掌握了吗?
【2月更文挑战第4天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,助你一臂之力,带你早日登顶🚀,欢迎大家关注&&收藏!持续更新中,up!up!up!!
166 4
|
Java API Android开发
|
存储 JSON 数据可视化
3.Cesium中实体Entity创建(超详细)
本文中,我将介绍 Cesium 中创建实体的方法,并对其进行分类,帮助读者快速理解 Cesium 中实体的类别,创建代码以及具体效果;
1745 0