#include <iostream>
using namespace std;
double factorial(int n)
{
if (n == 1)
return 1;
else
return factorial(n - 1) * 1 / n;//使用迭代求阶乘的倒数
}
int main()
{
int n;
cin >> n;
double sum = 0;
for (int i = 1; i <= n; i++)
sum += factorial(i);
printf("%.4lf", sum);
}
2021.2
#include <iostream>
#include<iostream>
using namespace std;
int low_bit(int x)//求最低位的1的值
{
return x & (-x);
}
int main()
{
long long a, b, c;
cin >> a >> b;
c = a ^ b;
int ans = 0;
while (c)
{
c -= (low_bit(c));
ans++;
}
cout << ans;
}
}
2021.3
#include<iostream>
#include<vector>
using namespace std;
vector<pair<int, bool>> get(int i, int j, vector<pair<int, bool>>nums, int x, bool flag)
{
vector<pair<int, bool>>res;
for (int k = 0; k < nums.size(); k++)
{
if (k != i && k != j)
res.push_back(nums[k]);
}
res.push_back(make_pair(x, flag));
return res;
}//求每次运算后剩余的数组
bool dfs(vector<pair<int, bool>>nums)
{
if (nums.size() == 1) return ((nums[0].first - 24) == 0);
for (int i = 0; i < nums.size(); i++)
{
for (int j = 0; j < nums.size(); j++)
{
pair<int, bool> a;
pair<int, bool> b;
if (i != j)
{
a = nums[i],
b = nums[j];
if (dfs(get(i, j, nums, a.first + b.first, true)))return true;
if (!a.second && !b.second)//a和b均不是由加法得到,则再遍历一次乘法
if (dfs(get(i, j, nums, a.first * b.first, false))) return true;
}
}
}
return false;
}
int main()
{
vector<pair<int, bool>>nums;
int x;
for (int i = 0; i < 4; i++)
{
cin >> x;
nums.push_back(make_pair(x, false));
}
if (dfs(nums))
cout << "Yes";
else
cout << "No";
}
2021.4
#include<iostream>
#include<vector>
using namespace std;
int main()
{
int n;
cin >> n;
vector<int>seven;
while (n)
{
seven.push_back(n % 7);
n /= 7;
}
for (int i = seven.size() - 1; i >= 0; i--)
cout << seven[i];
}