- linux排序并去重 sort data.txt | uniq > data.txt
- 根据条件请求不同的处理器 用什么模式 代理模式 责任链 还是装饰器?
- 装饰器模式属于结构型模式吗?yes
- 装饰类和被装饰类耦合性高吗?no
- 动态添加和撤销对象可以用装饰器模式吗???
- http2新增了连接的keepalive功能吗?NO
- ptr[5]={1,2,3,4,5}; *(++ptr++)报错吗 编译报错吗?YES
- Class *c=nullptr; c->print()会报错吗:print是普通成员函数?YES print是虚函数?YES
- 一个类可以声明几个友元函数?any
- vector在某位置插入?vec.insert(it, 10);
- 一条线剪断判断最大长度(用的vector insert和遍历求最大值超时了)50%
- 给定一个数n 要找到所有的数x 满足条件gcd(n,x)=x (40%)
- 质因数分解
- 大数相乘
- 判断是不是质数
bool isPrime(int num) {
if (num <= 1) return false;
if (num <= 3) return true;
if (num % 2 == 0 || num % 3 == 0) return false;
for (int i = 5; i * i <= num; i += 6)
if (num % i == 0 || num % (i + 2) == 0)
return false;
return true;
}
int multiply(string& num1, string& num2) {
int n1 = num1.size(), n2 = num2.size();
std::vector<int> result(n1 + n2, 0);
// 模拟竖式乘法
for (int i = n1 - 1; i >= 0; i--) {
int carry = 0;
for (int j = n2 - 1; j >= 0; j--) {
int sum = (num1[i] - '0') * (num2[j] - '0') + result[i + j + 1] + carry;
result[i + j + 1] = sum % 10;
carry = sum / 10;
}
if (carry > 0) result[i] += carry;
}
// 去除前导零
std::string ans = "";
int i = 0;
while (i < result.size() && result[i] == 0) i++;
while (i < result.size()) ans += std::to_string(result[i++]);
// 取模
int res = 0;
for (char digit : ans) res = (res * 10 + digit - '0') % mod;
return res;
}