CF Div.2 C
  • 板块学术版
  • 楼主__vector__
  • 当前回复6
  • 已保存回复6
  • 发布时间2023/6/19 00:43
  • 上次更新2023/10/23 12:47:33
查看原帖
CF Div.2 C
507348
__vector__楼主2023/6/19 00:43

刚刚发错了。
一直 WA#2

#include <bits/stdc++.h>
using namespace std;
#define FOR(i,a,b) for(int i=a;i<=b;i++)
#define REP(i,a,b) for(int i=a;i>=b;i--)
#define pb push_back()
#define mkpr make_pair
typedef long long ll;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
#define int long long
int t;
int a,b,c;
ll k;
int pw10[15];
signed main()
{
    pw10[1]=9;
    pw10[2]=99;
    pw10[3]=999;
    pw10[4]=9999;
    pw10[5]=99999;
    pw10[6]=999999;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%lld%lld%lld",&a,&b,&c);
        scanf("%lld",&k);
        if(c!=max(a,b)&&c!=max(a,b)+1)
        {
            puts("-1");
            continue;
        }
        FOR(i,pw10[a-1]+1,pw10[a])
        {
            if(c==max(a,b))
            {
                int sy=max(0ll,pw10[c]-i-max(pw10[c-1]-i,pw10[b-1]));
                if(k>sy)k-=sy;
                else if(k<=sy)
                {
                    int j=max(pw10[c-1]-i,pw10[b-1])+k;
                    printf("%lld + %lld = %lld\n",i,j,i+j);
                    k=0;
                    break;
                }
            }
            if(c==max(a,b)+1)
            {
                int sy=max(0ll,min(pw10[c],i+pw10[b])-i-max(pw10[c-1]-i,pw10[b-1]));
          //      printf("lim = %d %d i = %d\n",pw10[c],i+pw10[b],i);
                if(k>sy)k-=sy;
                else if(k<=sy)
                {
                    int j=max(pw10[c-1]-i,pw10[b-1])+k;
                    printf("%lld + %lld = %lld\n",i,j,i+j);
                    k=0;
                    break;
                }
            }
        }
        if(k>0)puts("-1");
    }
	return 0;
}
  
2023/6/19 00:43
加载中...