1 条题解

  • 1
    @ 2025-12-11 20:48:58

    贪心即可

    #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
    上传者