本文主要是介绍官封弼马心何足,名注齐天意未宁,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
解法一:
设left为多,right为少
每次分裂满足;
所以;
定义函数num(n,k),子问题为num(l,k)和num(r,k)。
递归结束:不可以精确分裂
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
#define endl '\n'
#define int long long
int sum = 0;
void num(int n, int k) {if (n <= 0) return;if ((n - k) == 0) {sum++;return;}if ((n + k) & 1 || (n - k) & 1) {sum++;return;}num((n + k) / 2, k);num((n - k) / 2, k);return;
}
signed main() {ios::sync_with_stdio(false);cin.tie(0); cout.tie(0);int n, k;cin >> n >> k;num(n, k);cout << sum;return 0;
}
解法二:
摘自子谦
#include<iostream>
using namespace std;
int f(long long a,long long b)
{if ((a+b)%2==0&&a>b){return f((a+b)/2,b)+f((a-b)/2,b);}else return 1;
}
int main()
{long long n,k;cin>>n>>k;cout<<f(n,k);
}
这篇关于官封弼马心何足,名注齐天意未宁的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!