Codeforces1076 B.Divisor Subtraction(思维)

    科技2022-07-21  120

    题意:

    数据范围:n<=1e10

    解法:

    1.如果n是偶数,那么一定是一直减2,答案为n/2 2.如果n是奇数,找到n的最小质因子,减去之后就变成偶数了,即情况1。

    code:

    #include<bits/stdc++.h> using namespace std; #define int long long const int maxm=1e6+5; int n; int getmi(int x){ for(int i=2;i*i<=x;i++){ if(x%i==0)return i; } return x; } signed main(){ cin>>n; if(n%2==0){ cout<<n/2<<endl; }else{ int mi=getmi(n); n-=mi; cout<<n/2+1<<endl; } return 0; }
    Processed: 0.008, SQL: 8