关注
// 第二个硬币问题,如果有错误,欢迎指正。
// dp[i][j] 表示从最低的二进制位到第 i 位,j = 0 表示无进位,j = 1 表示有进位的方案数
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
ll n;
ll dp[100][2];
int main(void) {
ll n;
while (cin >> n) {
memset(dp, 0, sizeof(dp));
dp[0][0] = 1;
dp[0][1] = 1;
if (n & 1) dp[0][1] = 0;
for (int i = 1; i <= 60; ++ i) {
if (n & (1LL<<i)) {
dp[i][0] += dp[i - 1][0];
dp[i][0] += dp[i - 1][1];
dp[i][1] += dp[i - 1][1];
} else {
dp[i][0] += dp[i - 1][0];
dp[i][1] += dp[i - 1][0];
dp[i][1] += dp[i - 1][1];
}
}
cout << dp[60][0] << endl;
}
return 0;
}
第三题,我是直接贪心,从上往下不断的砍。。 #include <bits/stdc++.h>
using namespace std;
int main(void) {
int a, b, A, B;
while (cin >> a >> b >> A >> B) {
bool flag = true;
int ans = 0;
while (A > a && B > b) {
if (A % 2 == 0 && B % 2 == 0) {
A /= 2; B /= 2;
} else if (A % 2 == 1 && B % 2 == 1) {
-- A; -- B;
} else {
flag = false;
break;
}
++ ans;
}
if (flag && A == a && B == b) cout << ans << endl;
else cout << -1 << endl;
}
return 0;
}
查看原帖
点赞 11
相关推荐
查看2道真题和解析 投递腾讯等公司7个岗位 >
点赞 评论 收藏
转发
查看5道真题和解析 投递腾讯等公司10个岗位 >
点赞 评论 收藏
转发
投递腾讯等公司7个岗位
点赞 评论 收藏
转发
牛客热帖
正在热议
# 牛客帮帮团来啦!有问必答 #
872990次浏览 13843人参与
# 机械制造薪资爆料 #
325765次浏览 3783人参与
# 24届软开秋招面试经验大赏 #
1066810次浏览 16981人参与
# 晒一晒我的offer #
3520763次浏览 55757人参与
# 如果重来一次你还会读研吗 #
75154次浏览 727人参与
# offer决赛圈,我是怎么选的 #
204847次浏览 2300人参与
# 金三银四,你有感觉到吗 #
335353次浏览 4271人参与
# 国企vs私企,你更想去? #
25641次浏览 292人参与
# 求职遇到的搞笑事件 #
20008次浏览 291人参与
# 我发现了面试通关密码 #
357236次浏览 6725人参与
# 2023届毁约公司名单 #
94322次浏览 370人参与
# 0offer是寒冬太冷还是我太菜 #
434068次浏览 4981人参与
# 找工作,你会甘心进小厂还是猛冲大厂 #
38305次浏览 375人参与
# 你觉得找工作该拿大厂还是小厂练手 #
63663次浏览 903人参与
# 好工作要具备的条件有哪些? #
4506次浏览 61人参与
# 我在牛爱网找对象 #
51669次浏览 342人参与
# 海康威视求职进展汇总 #
104861次浏览 1246人参与
# 你会选择考研还是直接就业 #
79849次浏览 925人参与
# 实习与准备秋招该如何平衡 #
182972次浏览 3258人参与
# 职业发展规划如何回答 #
12757次浏览 89人参与