ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#213288 | #3847. 分数约分 | 18112606231 | 50 | 2656ms | 1276kb | C++11 | 2.9kb | 2024-11-10 11:54:01 | 2024-11-10 13:06:14 |
answer
#include <bits/stdc++.h>
#define int long long
#define MOD 1000000007
using namespace std;
int t, a, b, n, gcdd, minn, minx, shu[11], shuu[11], nowshu[11], nowshuu[11];
string s, ss;
bool xuan[21];
int stolll(string s)
{
int res = 0;
for (int i = 0; i < s.size(); i++)
{
res = res * 10 + s[i] - '0';
}
return res;
}
void dfs(int x)
{
if (x == n)
{
string res = "";
memset(nowshu, 0, sizeof(nowshu));
memset(nowshuu, 0, sizeof(nowshuu));
for (int i = 0; i < n; i++)
{
if (xuan[i])
{
res += s[i];
nowshu[s[i] - '0']++;
}
//cout<<"res:"<<res<<endl;
}
//cout<<res<<endl;
int num = stolll(res);
if (num == 0)
return;
if (b * num % a != 0)
return;
num = b * num / a;
string res2 = to_string(num),res3="";
for(int i=0,j=0;i<res2.size(),j<ss.size();j++)
{
if(res2[i]==ss[j])
{
res3+=ss[j];
i++;
}
}
//cout << res << "/" << res2 << ' ' << a << '/' << b<<' '<<res3 << endl;
if(res3!=res2)
return;
for (int i = 0; i < res2.size(); i++)
{
nowshuu[res2[i] - '0']++;
}
for (int i = 0; i < 10; i++)
{
//if(res=="670512")
//cout<<shu[i]<<' '<<nowshu[i]<<' '<<shuu[i]<<' '<<nowshuu[i]<<endl;
if (shu[i] - nowshu[i] < 0 || shuu[i] < nowshuu[i])
{
return;
}
if (shu[i] - nowshu[i] != shuu[i] - nowshuu[i])
{
return;
}
}
int ans1 = stolll(res);
int ans2 = stolll(res2);
//cout<<ans1*b<<' '<<a*ans2<<endl;
if (ans1 * b == a * ans2)
{
minn = min(minn, ans1);
minx = min(minx, ans2);
}
return;
}
xuan[x] = true;
dfs(x + 1);
xuan[x] = false;
dfs(x + 1);
}
signed main()
{
scanf("%lld", &t);
while (t--)
{
scanf("%lld %lld", &a, &b);
memset(xuan, 0, sizeof(xuan));
memset(shu, 0, sizeof(shu));
memset(shuu, 0, sizeof(shuu));
bool flag = false;
if (a > b)
{
flag = true;
swap(a, b);
}
minn = a, minx = b;
s = to_string(a);
ss = to_string(b);
for (int i = 0; i < s.size(); i++)
{
shu[s[i] - '0']++;
}
for(int i = 0; i < ss.size(); i++)
{
shuu[ss[i] - '0']++;
}
n = s.size();
dfs(0);
if (!flag)
printf("%lld %lld\n", minn, minx);
else
printf("%lld %lld\n", minx, minn);
}
return 0;
}
Details
小提示:点击横条可展开更详细的信息
Test #1:
score: 10
Accepted
time: 5ms
memory: 1276kb
input:
10 295227892 738069730 21284157 63852471 312774536 781936340 82221828 68518190 167752458 55917486 90...
output:
295227892 738069730 21 63 31277456 78193640 822228 685190 167752458 55917486 904 7232 171 1197 24114...
result:
ok 20 numbers
Test #2:
score: 10
Accepted
time: 0ms
memory: 1268kb
input:
10 7231248 1807812 4301415 3441132 1931046 3862092 5184264 3240165 1144774 1717161 298584 2388672 87...
output:
324 81 4301415 3441132 193146 386292 518424 324015 1144774 1717161 298584 2388672 878 7902 370928 29...
result:
ok 20 numbers
Test #3:
score: 10
Accepted
time: 3ms
memory: 1272kb
input:
10 72320000 27120000 110000 11000000 90100000 9010000 270000 75600000 8230000 82300000 17910000 5970...
output:
32 12 1 100 10 1 2 560 2 20 171 57 893 94 60 6 7 70 434 620
result:
ok 20 numbers
Test #4:
score: 0
Wrong Answer
time: 3ms
memory: 1268kb
input:
10 6700512 10050768 6712050 10068075 7172058 10758087 9318720 13978080 71635224 107452836 71643522 1...
output:
670512 1005768 671250 1006875 717258 1075887 931872 1397808 71635224 107452836 71643522 107465283 71...
result:
wrong answer 9th numbers differ - expected: '3522', found: '71635224'
Test #5:
score: 10
Accepted
time: 588ms
memory: 1272kb
input:
10 44896548685746979 44896548685746979 76555658957975878 76555658957975878 9999998899899899 99999988...
output:
4 4 5 5 8 8 5 5 2 2 8 8 8 8 1 1 4 4 9 9
result:
ok 20 numbers
Test #6:
score: 10
Accepted
time: 360ms
memory: 1272kb
input:
10 5586978859946748 5586978859946748 5875932326322532 5875932326322532 7877997999879887 787799799987...
output:
4 4 2 2 7 7 9 9 4 4 6 6 8 8 4 4 7 7 4 4
result:
ok 20 numbers
Test #7:
score: 0
Wrong Answer
time: 273ms
memory: 1272kb
input:
10 163163163163163 326326326326326 163163111163111 326326222326222 142847142847 285714285714 2857142...
output:
11111 22222 163163111163111 326326222326222 142847142847 285714285714 285714 714285 8 4 432106661661...
result:
wrong answer 3rd numbers differ - expected: '111111111', found: '163163111163111'
Test #8:
score: 0
Wrong Answer
time: 993ms
memory: 1268kb
input:
10 142847114287112857 285714228574225714 142847111111112857 285714222222225714 142847111111111111 28...
output:
142847114287112857 285714228574225714 142847111111112857 285714222222225714 142847111111111111 28571...
result:
wrong answer 7th numbers differ - expected: '11111111111111111', found: '111111111111111110'
Test #9:
score: 0
Wrong Answer
time: 431ms
memory: 1268kb
input:
10 687069149440626451 336182506802090732 216198376277246428 246457923661369649 43706817238884428 372...
output:
687069149440626451 336182506802090732 216198376277246428 246457923661369649 43706817238884428 372089...
result:
wrong answer 13th numbers differ - expected: '111111111', found: '163163111163111'
Test #10:
score: 0
Time Limit Exceeded
input:
10 142847114247112857 285714228714225714 142847111111112857 285714222222225714 142847111111111111 28...