数论题目打卡

acwing197 阶乘分解

题目

#include <bits/stdc++.h>
#define ll long long
#define mem(a, b) memset(a, b, sizeof a)
#define ull unsigned long long
#define INF 0x3f3f3f3f3f3f3f3f
#define inf 0x3f3f3f3f
#define rep(i, a, b) for (auto i = a; i <= b; ++i)
#define bep(i, a, b) for (auto i = a; i >= b; --i)
#define lowbit(x) x&(-x)
#define PII pair<int, int>
#define x first
#define y second
#define PLL pair<ll, ll>
#define PI acos(-1)
#define pb push_back
#define eb emplace_back
const double eps = 1e-6;
const int N = 2e5 + 10;
using namespace std;
int mod = 1e9 + 7;
bool st[1010099 + 9];
int pri[100000 + 9];
void init(int n){
    int cnt=0;
    st[0]=st[1]=1;
    for(int i=2;i<n;i++){
        if(!st[i])pri[cnt++]=i;
        for(int j=0;pri[j]*i<=n;j++){
            st[pri[j]*i]=true;
            if(i%pri[j]==0)break;
        }
    }
    return ;
}
void solve() {
    long long a, b, n, m, ans;
    init(1010099);
    cin>>n;
    m=0;
    while(pri[m]<=n){
        a=pri[m],ans=0;
        for(int i=1;a<=n;i++){
            ans+=(n/a);
            a*=pri[m];
        }
        cout<<pri[m++]<<" "<<ans<<endl;
    }
}
int main() {
    ios::sync_with_stdio(0);
    solve();
    return 0;
}

acwing1292 哥德巴赫猜想

在这里插入图片描述

#include <bits/stdc++.h>
#define ll long long
#define mem(a, b) memset(a, b, sizeof a)
#define ull unsigned long long
#define INF 0x3f3f3f3f3f3f3f3f
#define inf 0x3f3f3f3f
#define rep(i, a, b) for (auto i = a; i <= b; ++i)
#define bep(i, a, b) for (auto i = a; i >= b; --i)
#define lowbit(x) x&(-x)
#define PII pair<int, int>
#define x first
#define y second
#define PLL pair<ll, ll>
#define PI acos(-1)
#define pb push_back
#define eb emplace_back
const double eps = 1e-6;
const int N = 2e5 + 10;
using namespace std;
int mod=1e9+7;
bool st[1000000+9];
int pri[1000000+9];
void initt(int n){
    int cnt=0;
    for(int i=2;i<=n;i++){
        if(!st[i])pri[cnt++]=i;
        for(int j=0;pri[j]*i<=n;j++){
            st[pri[j]*i]=true;
            if(i%pri[j]==0)break;
        }
    }
    return ;
}

void solve() {      
    initt(1000000);
    int x,ans;
    while(cin>>x){
        if(x==0)return ;
        for(int i=0;;i++){
            if(!st[x-pri[i]]){
                cout<<x<<" = "<<pri[i]<<" + "<<x-pri[i]<<endl;
                break;
            }
        }
    }
}
int main() {
    ios::sync_with_stdio(0);
    solve();
    return 0;
}

acwing 196. 质数距离

在这里插入图片描述

#include <bits/stdc++.h>
#define ll long long
#define mem(a, b) memset(a, b, sizeof a)
#define ull unsigned long long
#define INF 0x3f3f3f3f3f3f3f3f
#define inf 0x3f3f3f3f
#define rep(i, a, b) for (auto i = a; i <= b; ++i)
#define bep(i, a, b) for (auto i = a; i >= b; --i)
#define lowbit(x) x&(-x)
#define PII pair<int, int>
#define x first
#define y second
#define PLL pair<ll, ll>
#define PI acos(-1)
#define pb push_back
#define eb emplace_back
const double eps = 1e-6;
const int N = 2e5 + 10;
using namespace std;
int mod=1e9+7;
bool st[1000000+9];
int pri[1000000+9];
void initt(int n){
    int cnt=0;
    for(int i=2;i<=n;i++){
        if(!st[i])pri[cnt++]=i;
        for(int j=0;pri[j]*i<=n;j++){
            st[pri[j]*i]=true;
            if(i%pri[j]==0)break;
        }
    }
    return ;
}
void solve() {
    initt(100000);
    int x,ans,l,r,cnt=0;
    while(cin>>l>>r){
        if(l==1)l++;
        cnt=0;
        memset(st,0,sizeof st);
        while (pri[cnt] <= ceil(sqrt(r))) {
            x = (l / pri[cnt]);
            if (x * pri[cnt] < l) x++;
            for (int i = 0; i+x <= r / pri[cnt]; i++) {
                if(x+i==1)continue;
                st[(x + i) * pri[cnt] - l]=true;
            }
            cnt++;
        }
        int ma=-1,mi=99999999,ak=-1,l1,r1,l2,r2; 
        for(int i=0;i<r-l+1;i++){
            if(!st[i]){
                if(ak==-1)ak=i;
                else {
                    if(ma<i-ak+1){
                        ma=i-ak+1;
                        l1=ak;
                        r1=i;
                    }
                    if(mi>i-ak+1){
                        mi=i-ak+1;
                        l2=ak;
                        r2=i;
                    }
                    ak=i;
                }
            }
        }
        if (ma == -1) cout << "There are no adjacent primes." << endl;
        else
        cout <<l+l2<<","<<l+r2<<" are closest, "<<l+l1<<","<<l+r1<<" are most distant."<<endl;
        }
    
}
int main() {
    ios::sync_with_stdio(0);
    solve();
    return 0;
}

acwing 1293. 夏洛克和他的女朋友

在这里插入图片描述

#include <bits/stdc++.h>
#define ll long long
#define mem(a, b) memset(a, b, sizeof a)
#define ull unsigned long long
#define INF 0x3f3f3f3f3f3f3f3f
#define inf 0x3f3f3f3f
#define rep(i, a, b) for (auto i = a; i <= b; ++i)
#define bep(i, a, b) for (auto i = a; i >= b; --i)
#define lowbit(x) x&(-x)
#define PII pair<int, int>
#define x first
#define y second
#define PLL pair<ll, ll>
#define PI acos(-1)
#define pb push_back
#define eb emplace_back
const double eps = 1e-6;
const int N = 2e5 + 10;
using namespace std;
int mod=1e9+7;
bool st[1000000+9];
int pri[1000000+9];
void initt(int n){
    int cnt=0;
    for(int i=2;i<=n;i++){
        if(!st[i])pri[cnt++]=i;
        for(int j=0;pri[j]*i<=n;j++){
            st[pri[j]*i]=true;
            if(i%pri[j]==0)break;
        }
    }
    return ;
}
void solve() {      
    initt(1000000);
    int x,ans;
    cin>>x;
    if(x>2)
    cout<<2<<endl;
    else cout<<1<<endl;
    for(int i=2;i<=x+1;i++){
        if(i!=2)cout<<" ";
        if(!st[i])cout<<"1";
        else cout<<"2";
    }cout<<endl;
}
int main() {
    ios::sync_with_stdio(0);
    solve();
    return 0;
}

acwing 1290. 越狱

在这里插入图片描述

#include <bits/stdc++.h>
#define ll long long
#define mem(a, b) memset(a, b, sizeof a)
#define ull unsigned long long
#define INF 0x3f3f3f3f3f3f3f3f
#define inf 0x3f3f3f3f
#define rep(i, a, b) for (auto i = a; i <= b; ++i)
#define bep(i, a, b) for (auto i = a; i >= b; --i)
#define lowbit(x) x&(-x)
#define PII pair<int, int>
#define x first
#define y second
#define PLL pair<ll, ll>
#define PI acos(-1)
#define pb push_back
#define eb emplace_back
const double eps = 1e-6;
const int N = 2e5 + 10;
using namespace std;
ll mod = 100003;
ll fastpow(ll a, ll n, ll mod) {
    ll base = a, res = 1;
    while (n) {
        if (n & 1) res = (base * res) % mod;
        base = base*base%mod;
        n >>= 1;
    }
    return res;
}
void solve() {
    ll a, b, n, m, ans;
    cin >> m >> n;
    cout << (fastpow(m,n,mod)-m*fastpow(m-1,n-1,mod)%mod+mod)%mod << endl;
}
int main() {
    ios::sync_with_stdio(0);
    solve();
    return 0;
}

acwing 1289序列的第k个数

在这里插入图片描述

#include <bits/stdc++.h>
#define ll long long
#define mem(a, b) memset(a, b, sizeof a)
#define ull unsigned long long
#define INF 0x3f3f3f3f3f3f3f3f
#define inf 0x3f3f3f3f
#define rep(i, a, b) for (auto i = a; i <= b; ++i)
#define bep(i, a, b) for (auto i = a; i >= b; --i)
#define lowbit(x) x&(-x)
#define PII pair<int, int>
#define x first
#define y second
#define PLL pair<ll, ll>
#define PI acos(-1)
#define pb push_back
#define eb emplace_back
const double eps = 1e-6;
const int N = 2e5 + 10;
using namespace std;
ll mod = 200907;
ll fastpow (ll a,ll n,ll c){
    ll base=a;
    ll res=1;
    while(n){
        if(n&1)res=(base*res)%mod;
        base=base*base%mod;
        n>>=1;
    }
    return res;
}
void solve() {
    ll a, b, c, n, m, ans;
    cin >>a>>b>>c>>n;
    if(b-a==c-b){
        cout<<(a%mod+(b-a)*(n-1)%mod)%mod<<endl;
    }
    else{
        cout<<a%mod*fastpow(b/a,n-1,mod)%mod<<endl;
    }

}
int main() {
    ios::sync_with_stdio(0);
    int t;
    cin>>t;
    while(t--)
    solve();
    return 0;
}

acwing 1294樱花

在这里插入图片描述

#include <bits/stdc++.h>
#define ll long long
#define mem(a, b) memset(a, b, sizeof a)
#define ull unsigned long long
#define INF 0x3f3f3f3f3f3f3f3f
#define inf 0x3f3f3f3f
#define rep(i, a, b) for (auto i = a; i <= b; ++i)
#define bep(i, a, b) for (auto i = a; i >= b; --i)
#define lowbit(x) x&(-x)
#define PII pair<int, int>
#define x first
#define y second
#define PLL pair<ll, ll>
#define PI acos(-1)
#define pb push_back
#define eb emplace_back
const double eps = 1e-6;
const int N = 2e5 + 10;
using namespace std;
const ll mod=1000000007;
ll pri[100000+9];
bool st[1000000+9];
ll cnt=0;
void init(ll n){
    for(ll i=2;i<=n;i++){
        if(!st[i])pri[cnt++]=i;
        for(ll j=0;pri[j]*i<=n;j++){
            st[pri[j]*i]=true;
            if(i%pri[j]==0)break;
        }
    }
    return ;
}
void solve() {
    ll n,m=0,ans=1;
    cin>>n;
    init(n);
    for(ll i=cnt-1;i>=0;i--){
        ll p=pri[i];m=0;
        for(ll j=pri[i];j<=n;j*=pri[i]){
            m+=n/j;
        }
        ans=(ans*(m+m+1))%mod;
    }
    cout<<ans<<endl;
    return ;
}
int main() {
    ios::sync_with_stdio(0);
    solve();
    return 0;
}

acwing 1291 轻拍牛头

在这里插入图片描述

#include <bits/stdc++.h>
#define ll long long
#define mem(a, b) memset(a, b, sizeof a)
#define ull unsigned long long
#define INF 0x3f3f3f3f3f3f3f3f
#define inf 0x3f3f3f3f
#define rep(i, a, b) for (auto i = a; i <= b; ++i)
#define bep(i, a, b) for (auto i = a; i >= b; --i)
#define lowbit(x) x&(-x)
#define PII pair<int, int>
#define x first
#define y second
#define PLL pair<ll, ll>
#define PI acos(-1)
#define pb push_back
#define eb emplace_back
const double eps = 1e-6;
const int N = 2e5 + 10;
using namespace std;
int cnt[1000000+9];
int arr[1000000+9];
int brr[1000000 + 9];
void solve() {
    int n,m=0,ans;
    memset(cnt,0,sizeof cnt);
    memset(arr,0,sizeof(arr));
    memset(brr, 0, sizeof(brr));
    cin>>n;  
    for(int i=0;i<n;i++){
        cin>>arr[i];
        m=max(arr[i],m);
        cnt[arr[i]]++;
    }
    for(int i=0;i<n;i++){
        if(!cnt[arr[i]])continue;
        for(int j=arr[i];j<=m;j+=arr[i]){
            brr[j]+=cnt[arr[i]];
        }
        cnt[arr[i]]=0;
    }
    for(int i=0;i<n;i++){
        cout<<brr[arr[i]]-1<<endl;
    }
    return ;
}
int main() {
    ios::sync_with_stdio(0);
    solve();
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值