九日集训day 2
累加器
题目链接
请设计一个机械累加器,计算从 1、2… 一直累加到目标数值 target 的总和。注意这是一个只能进行加法操作的程序,不具备乘除、if-else、switch-case、for 循环、while 循环,及条件判断语句等高级功能。
class Solution {
public:
int mechanicalAccumulator(int target) {
return (1+target)*target/2;
}
};
这是直接用的等差数列写的
class Solution {
public:
int mechanicalAccumulator(int target) {
int ans=0;
for(int i=1;i<=target;++i){
ans+=i;
}
return ans;
}
};
这是用的循环写的
判断是否为2的幂
class Solution {
public:
bool isPowerOfTwo(int n)
{
return n > 0 && (n & (n-1)) == 0;
}
};
我虽然也想到了位运算,但是没有最好的解法简便。这里直接判断了两点:1.是否大于0?
这里用到的位运算的方法是这样的:如果是2的幂,那么只有一位是1其余都是0,那么这个数和n-1进行位与运算的时候得出来的结果是0
判断是否为3的幂
class Solution {
public:
bool isPowerOfThree(int n) {
if(n<=0){
return false;
}
for(int i=1;i!=1162261467;i*=3){
if(i==n){
return true;
}
}
return n==1162261467;
}
};
这是用循环写的,我看看官方的解法好像差不多,但为什么那么快?
官方代码如下:
class Solution {
public:
bool isPowerOfThree(int n) {
if(n<=0)
{
return false;
}
long x=1;
while(x!=n)
{
x=x*3;
if(x>n)
{
return false;
}
}
return true;
}
};
判断是否是4的幂
题目链接
基本不用改的,直接写就完事了
class Solution {
public:
bool isPowerOfFour(int n) {
if(n<=0)
{
return false;
}
long x=1;
while(x!=n)
{
x=x*4;
if(x>n)
{
return false;
}
}
return true;
}
};
leetcode 1492 n的第k个因子子
class Solution {
public:
int kthFactor(int n, int k) {
bool flag=true;
for(int i=1;i<=n;i++){
if(n%i==0){
k--;
}
if(k==0){
flag=false;
return i;
}
}
if(flag){
return -1;
}else{
return 0;
}
}
};
判断是否是完全平方数
class Solution {
public:
bool isPerfectSquare(int num) {
int i=sqrt(num);
i*=i;
if(i==num){
return true;
}else{
return false;
}
}
};
这段代码是一个C++函数,用于判断给定整数 num
是否为完全平方数。这里是对代码的逐步解析:
-
函数签名:
bool isPerfectSquare(int num)
- 这个方法属于Solution
类,并接受一个整数num
作为参数。它返回一个布尔值,表示num
是否是完全平方数。
-
求平方根:
int i = sqrt(num);
- 这行代码使用sqrt
函数(需要包含<cmath>
或<math.h>
头文件)计算num
的平方根,并将结果存储在整型变量i
中。由于i
被声明为整数,所以这里的平方根会被自动向下取整。
-
计算平方:
i *= i;
- 这行代码将i
的值乘以其自身,即计算其平方。
-
判断是否为完全平方数:
if (i == num)
- 这个条件判断i
(即num
的平方根的平方)是否等于原始数num
。如果相等,说明num
是一个完全平方数。return true;
- 如果条件满足(即num
是完全平方数),函数返回true
。
else
- 如果不相等,执行 else 分支。return false;
- 返回false
,表示num
不是完全平方数。
这个函数有效地判断了一个整数是否可以表示为某个整数的平方,即检查它是否是完全平方数。