很诡异的一件事。
我提交 HDU 4153 的时候,写了一份完整代码,然后提交,然而 403 forbidden,提交记录也没有我的信息。
反复多次提交,换 IP 换网络也没用,求助同学账号提交也是一个结果。
然后,我同学稍微修改了代码,给位运算加了个括号(不影响逻辑),然后就能交上去了。
我尝试在原始代码基础上随机删除了近一半字符,也能交上去,但是删的字符稍微少点就交不上去了。
有人遇到一样的情况吗?
无法提交成功的代码:
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <vector>
#include <cmath>
#include <algorithm>
#include <cassert>
using namespace std;
#define FOR(i,a,b) for(int i=a;i<=b;i++)
#define REP(i,a,b) for(int i=a;i>=b;i--)
typedef long long ll;
ll a,b,n;
ll primes[100];
int top;
void solve(int id_of_test){
scanf("%lld%lld%lld",&a,&b,&n);
top=0;
for(ll x=2;x*x<=n;x++){
if(n%x==0){
primes[++top]=x;
while(n%x==0)n/=x;
}
}
if(n>=2){
primes[++top]=n;
}
int all=(1<<top)-1;
ll ans=0;
FOR(msk,1,all){
ll mul=1;
FOR(i,1,top){
if(msk&(1<<(i-1))){
mul=mul*primes[i];
}
}
ll s=(b/mul)-(a/mul+(a%mul!=0))+1;
ans+=s*(__builtin_parity(msk)?1:-1);
}
printf("Case #%d: %lld\n",id_of_test,b-a+1-ans);
}
int main()
{
int T;
scanf("%d",&T);
FOR(_,1,T){
solve(_);
}
return 0;
}