Hello friends! I’ve been struggling with the problem ETF, when everything seems to be fine with my code on my computer, i’m still getting WA here, I would be grateful if you can check out my code
#include <iostream>
#include <vector>
using namespace std;
vector<int> p,s;
void initPrime(vector<int> &p)
{
bool broken;
p.push_back(2);
for (int i=3;i<1000;i+=2){
broken=false;
for (int j=0;j<p.size();j++){
if (i%p[j]==0){
broken=true;
break;
}
}
if (!broken)
p.push_back(i);
}
}
int main() {
int t,n,ans,temp;
bool broken,first;
initPrime(p);
scanf("%d",&t);
while (t>0){
scanf("%d",&n);
broken=false;
ans=n;
if (n==1){
ans=1;
}else if (n==0){
ans=0;
}
else{
for (int i=0;i<p.size();i++){
if (n%p[i]==0){
broken=true;
break;
}
}
if (!broken)
ans--;
else
{
first=true;
for (int i=0;i<p.size();i++){
int t=p[i];
if (n%p[i]==0){
t=-t;
int sv=s.size();
for (int j=0;j<sv;j++){
temp=s[j]*t;
if (temp>n || -temp>n){
break;
}
s.push_back(temp);
}
s.push_back(t);
}
if(p[i]>n)
break;
}
for (int i=0;i<s.size();i++){
ans+=n/s[i];
}
}
}
printf("%d\n",ans);
s.clear();
t--;
}
return 0;
}
PS. I’ve tried it in c++(gcc 8.3), c++(g++ 4.3.2), c++14(gcc 8.3).