我试图找到 a 的平方int。我的代码如下所示:
long long sqr=0;
int num=77778;
sqr= num*num;
Run Code Online (Sandbox Code Playgroud)
结果应该是6049417284
但是当我检查输出时它显示1754449988。我在做什么错误?
long long应该能够存储结果,但为什么我得到不同的值?
我在leet代码上尝试House Robber问题(dp问题).来自用户GYX的这个解决方案看起来简单而优雅.
int rob(vector<int>& num) {
int n = num.size();
if (n==0) return 0;
vector<int> result(n+1,0);
result[1] = num[0];
for (int i=2;i<=n;i++){
result[i] = max(result[i-1],result[i-2]+num[i-1]);
}
return result[n];
}
Run Code Online (Sandbox Code Playgroud)
但我无法理解逻辑.请帮助我解决逻辑,以及如何处理这样的问题?
#include <iostream>
using namespace std;
int main() {
int n, a = 0xfffffff;
cin >> n;
while (n--) {
string s;
cin >> s;
int c = 0;
for (char ch : s)
c |= 1 << (ch - 'a');
a &= c;
}
cout << __builtin_popcount(a) << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
该代码用于查找字符是否存在于所有输入的字符串中至少一次.有人可以解释这段代码中发生的事情.我试图在C++中学习一些明智的操作,但我无法理解这里发生了什么.
当我得到前n个数字的总和时,我试图求解n的最接近值。这意味着如果我的总和为60,则我的n应该为10,因为前10个数字的总和为55,如果我包括11,则总和为66,超出了我的要求总和。
int num=1, mysum = 0;
int givensum=60;
while (mysum < givensum) {
mysum += num;
num++;
}
cout<<num-1;
return 0;
Run Code Online (Sandbox Code Playgroud)
我可以想到的另一种解决方法是求解二次方程
n(n+1) / 2 = givensum并从中得到n。还有其他解决方法吗?