QOJ.ac
QOJ
ID | Submission ID | Problem | Hacker | Owner | Result | Submit time | Judge time |
---|---|---|---|---|---|---|---|
#1097 | #692517 | #9248. An Easy Math Problem | Core_65536 | Core_65536 | Failed. | 2024-10-31 22:34:00 | 2024-10-31 22:34:00 |
Details
Extra Test:
Accepted
time: 914ms
memory: 5092kb
input:
2000 10000000000 9999998000 9999996000 9999994000 9999992000 9999990000 9999988000 9999986000 9999984000 9999982000 9999980000 9999978000 9999976000 9999974000 9999972000 9999970000 9999968000 9999966000 9999964000 9999962000 9999960000 9999958000 9999956000 9999954000 9999952000 9999950000 99999480...
output:
221 95 1040 284 137 22964 116 851 473 284 743 4253 410 284 1733 365 536 851 347 284 1580 284 116 1418 158 149 1040 284 410 284 446 851 2195 851 116 365 410 95 5198 95 1013 1418 347 95 1229 1094 1040 851 536 284 2723 95 410 2552 347 365 1418 284 347 662 527 851 1040 284 263 1094 116 95 2048 284 446 2...
result:
ok 2000 lines
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#692517 | #9248. An Easy Math Problem | Core_65536# | TL | 77ms | 5472kb | C++23 | 1.9kb | 2024-10-31 14:39:01 | 2024-10-31 22:43:15 |
answer
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define endl '\n'
#define int long long
vector<int>ans;
vector<__int128>res;
unordered_map<int,int>mp;
void dfs(int i,__int128 res1)
{
if(i==ans.size())
{
// cout<<res1<<"\n";
res.push_back(res1);
return ;
}
for(int j=0;j<=mp[ans[i]];j++)
{
int j1=j;
while(j1--) res1*=ans[i];
dfs(i+1,res1);
j1=j;
while(j1--) res1/=ans[i];
}
}
// bool is[100000010];
// vector<int>pr;
// void init()
// {
// for(int i=2;i<=1e8;i++)
// {
// if(!is[i]) pr.push_back(i);
// for(int j=0;j<pr.size()&&pr[j]*i<=1e8;j++)
// {
// is[pr[j]*i]=1;
// if(i%pr[j]==0) break;
// }
// }
// }
map<int,int>mp1;
void solve()
{
int n;
cin>>n;
if(mp1.count(n))
{
cout<<mp1[n]<<"\n";
return ;
}
int tn=n;
if(n==1)
{
cout<<"1\n";
return ;
}
mp.clear();
for(int i=2;i*i<=n;i++)
{
if(n%i==0)
{
while(n%i==0)
{
n/=i;
mp[i]++;
}
}
}
if(n!=1) mp[n]++;
ans.clear();
res.clear();
for(auto i:mp) ans.push_back(i.first);
dfs(0,1);
sort(res.begin(),res.end());
set<pair<int,int>>st;
for(int i=0;i<res.size();i++)
{
for(int j=i;j<res.size();j++)
{
if(res[i]*res[j]>tn) break;
if(tn%(res[i]*res[j])==0)
{
int g=__gcd(res[i],res[j]);
st.insert({res[i]/g,res[j]/g});
}
}
}
mp1[tn]=st.size();
cout<<st.size()<<"\n";
}
signed main ()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int t=1;
cin>>t;
while(t--) solve();
return 0;
}