QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#419034#5117. Find MaximumreverSillyWA 1ms3616kbC++231.2kb2024-05-23 17:10:072024-05-23 17:10:09

Judging History

你现在查看的是最新测评结果

  • [2024-05-23 17:10:09]
  • 评测
  • 测评结果:WA
  • 用时:1ms
  • 内存:3616kb
  • [2024-05-23 17:10:07]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
using i64=long long;
int f(int i)
{
	if(i==0)
		return 1;
	if(i%3==0)
		return f(i/3)+1;
	return f(i-1)+1;
}
int log3(i64 x)
{
    if(x==0)
        return 1;
	return log2(x)/log2(3)+1;
}
void itoa(i64 number,char *dest,int n){
    stack<char> s;
    if (number == 0) 
	{
        s.push(0);
    } else 
	{
        while (number) {
            s.push(number % n);
            number /= n;
        }
    }
    while (!s.empty())
    {
		*(dest++)=s.top();
        // printf("%d", s.top());
        s.pop();
    }
	*(dest++)=12;
}
i64 solve(i64 l,i64 r)
{
	char l3[50],r3[50];
	itoa(l,l3+log3(r)-log3(l),3);
	itoa(r,r3,3);
	fill_n(l3,log3(r)-log3(l),0);
	for(int i=0;l3[i]!=12;++i)
	{
		if(r3[i]!=l3[i])
		{
			return log3(r)-(i==0&&r==1)+accumulate(r3,r3+i+1,0)-1+(log3(r)-i-1)*2;
		}
	}
	return -1;
}
int T;
int main()
{
    cin.tie(nullptr);
    ios::sync_with_stdio(false);
    // char ch[10];
    // itoa(10,ch,3);
    // cout<<ch;
    // return 0;
	// for(int i=0;i<200;++i)
	// 	cout<<i<<' '<<f(i)<<'\n';
	cin>>T;
	while(T--)
	{
		i64 l,r;
		cin>>l>>r;
		cout<<solve(l,r+1);
	}
    return 0;
}

详细

Test #1:

score: 0
Wrong Answer
time: 1ms
memory: 3616kb

input:

10
1 2
1 3
1 4
1 5
2 3
2 4
2 5
3 4
3 5
4 5

output:

4445445455

result:

wrong answer 1st numbers differ - expected: '3', found: '4445445455'