1 条题解
-
1
贪心即可
#include<bits/stdc++.h> using namespace std; #define int long long const int N=1e5+10; struct nd{int a,b;}ans[N]; int fac[110]; signed main() { int l,r;scanf("%lld%lld",&l,&r); int m=0;fac[0]=1; for(int i=1;i<=60;i++)fac[i]=fac[i-1]*2; while(l<r) { for(int i=60;i>=0;i--) if(l%fac[i]==0&&l+fac[i]<=r) { ans[++m]={l,l+fac[i]}; l+=fac[i];break; } } printf("%lld\n",m); for(int i=1;i<=m;i++) printf("%lld %lld\n",ans[i].a,ans[i].b); return 0; }
- 1
信息
- ID
- 7712
- 时间
- 2000ms
- 内存
- 1024MiB
- 难度
- 7
- 标签
- 递交数
- 26
- 已通过
- 9
- 上传者