牛客刷题系列 (完全数计算, 扑克牌大小)
一:完全数计算
1.1 题目:
1.2 思路
根据完全数的定义写就好了
注意循环
1.3 旧版本
复制代码
for(int j=1; j<i; ++j) 将 i 全部遍历了一遍,时间复杂度为 O(n),效率不高
1.4 效率高的版本
复制代码
if(i % j == 0) //对约数进行求和{sum += j;if( i/j != sqrt(i) && j!=1){sum += i/j;}}
将 O(n)的时间复杂度降到了 O(logn)
1.5 注意事项
注意头文件的包含:#include<math.h>
注意开平方根函数的写法: sqrt()
二:扑克牌大小
2.1 题目
2.2 思路
我们可以将牌的状态分为三个:
我们就可以根据这三个状态来解析本题:
王炸:
复制代码
普通炸
复制代码
其他:
复制代码
2.3 代码实现
复制代码
2.4 注意事项
对 string 类函数的运用:
int count1 = count(s1.begin(),s1.end(),' '); int count2 = count(s2.begin(),s2.end(),' ');
count 函数可以快速求出牌数
substr 可以快速得到首牌
创建一个表来比较相同类型值的大小
评论