QOJ.ac
QOJ
ID | Submission ID | Problem | Hacker | Owner | Result | Submit time | Judge time |
---|---|---|---|---|---|---|---|
#1094 | #692517 | #9248. An Easy Math Problem | Core_65536 | Core_65536 | Failed. | 2024-10-31 21:59:27 | 2024-10-31 21:59:38 |
Details
Extra Test:
Accepted
time: 141ms
memory: 4460kb
input:
2000 10000000000 9999999998 9999999996 9999999994 9999999992 9999999990 9999999988 9999999986 9999999984 9999999982 9999999980 9999999978 9999999976 9999999974 9999999972 9999999970 9999999968 9999999966 9999999964 9999999962 9999999960 9999999958 9999999956 9999999954 9999999952 9999999950 99999999...
output:
221 41 203 41 32 365 53 14 1094 41 68 41 11 14 338 122 83 122 338 14 95 41 23 203 41 203 23 14 95 41 68 41 1229 122 203 122 11 14 23 14 122 68 68 14 95 41 8 41 50 41 5063 14 284 14 68 41 122 41 23 32 284 41 68 5 23 203 8 14 158 122 23 365 365 122 68 68 32 203 8 41 446 41 8 41 32 41 5468 14 14 14 608...
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;
}