头像

evil_7

湖南第一师范




离线:8小时前


最近来访(27)
用户头像
hahha
用户头像
Cold_heartless
用户头像
AcWing2AK
用户头像
dqsjysgs
用户头像
V1
用户头像
直言不
用户头像
南鸳.
用户头像
TEN.X
用户头像
姚锦安
用户头像
辉夜辉夜
用户头像
hyc_noi
用户头像
Arlen
用户头像
shaopu
用户头像
宇宇不爱喝奶茶
用户头像
liuzixin123
用户头像
伯牙绝弦
用户头像
Yusorai
用户头像
Meandi
用户头像
dyx
用户头像
yxc

活动打卡代码 AcWing 873. 欧拉函数

evil_7
9小时前
//这里填你的代码^^
//注意代码要放在两组三个点之间,才可以正确显示代码高亮哦~
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
    int a;
    cin>>a;
    while(a--)
    {
        int b;
        cin>>b;
        int res = b;
        for(int i = 2;i<=b/i;i++)
        {
            if(b%i==0)
            {
                res = res/i*(i-1);
                while(b%i==0)
                b/=i;
            }
        }
        if(b>1) res = res/b*(b-1);
        cout<<res<<endl;
    }
    return 0;
}


活动打卡代码 AcWing 870. 约数个数

evil_7
1个月前
#include <iostream>
#include <map>
using namespace std;
long long mod = 1e9+7;
int main()
{
    int a;
    cin>>a;
    long long res = 1;
    map<int,int> prime;
    while(a--)
    {
        int b;
        cin>>b;
        for(int i = 2;i<=b/i;i++)
        {
            while(b%i==0)
            {
                prime[i]++;
                b/=i;
            }
        }
        if(b>1) prime[b]++;
    }
    //然后他妈有忘掉了
    for(auto c:prime)
    {
        res = res*(c.second+1)%mod;
    }
    cout<<res<<endl;
    return 0;
}


活动打卡代码 AcWing 872. 最大公约数

evil_7
1个月前
#include <iostream>
#include <algorithm>
using namespace std;

int number(int a,int b)
{
    return b?number(b,a%b):a;
}

int main()
{
    int a;
    cin>>a;
    while(a--)
    {
        int c,d;
        cin>>c>>d;
        cout<<number(c,d)<<endl;
    }
    return 0;
}


活动打卡代码 AcWing 869. 试除法求约数

evil_7
1个月前
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

vector<int> shichufa(int a)
{
    vector<int> res;
    for(int i = 1;i<=a/i;i++)
    {
        if(a%i==0)
        {
            res.push_back(i);
            if(i!=a/i) res.push_back(a/i);
        }
    }
    sort(res.begin(),res.end());

    return res;
}

int main()
{
    int a;
    cin>>a;
    while(a--)
    {
       int b;
       cin>>b;
    auto res = shichufa(b);
    for(auto c :res) cout<<c<<" ";
     cout<<endl;
    }
    //shichufa(a);
    return 0;
}


活动打卡代码 AcWing 868. 筛质数

evil_7
1个月前
#include <iostream>
using namespace std;
const int N = 1000010;
int st[N];
int prime[N];
int main()
{
    int n;
    cin>>n;
    int coun = 0;
    for(int i = 2;i<=n;i++)
    {


            if(!st[i])
            {prime[coun++] = i;
             for(int j = i+i;j<=n;j+=i) st[j] = 1;
            }

    }
  //  int coun = 0;
//    for(int i = 2;i<=n;i++)
  //  {
    //    if(!st[i]) coun++;
   // }
    cout<<coun<<endl;
    return 0;
}


活动打卡代码 AcWing 867. 分解质因数

evil_7
1个月前

#include <iostream>
using namespace std;
//y总真的很牛逼,试除法,我想不到的思路

void shichufa(int x)
{
    for(int i = 2;i<=x/i;i++)
    {
        if(x%i==0)
        {
        int s = 0;
        while(x%i==0)
        {
            x/=i;//去掉前面小的质数因子同时,
            s++;
        }
        cout<<i<<" "<<s<<endl;
        }
    }
    //每个数最多只有一个,大于等于sqrt(n),的质数因子
    if(x>1) cout<<x<<" "<<1<<endl;
}

int main()
{
    int a;
    cin>>a;
    while(a--)
    {
        int b;
        cin>>b;
        shichufa(b);
        puts("");
    }
    return 0;
}



evil_7
1个月前
#include <iostream>
#include <algorithm>
#include <cstring>

using namespace std;
const int N = 100010;
int h[N],en[N],ne[N];
int q[N];
int d[N];
int m,n;
int idx;

void add(int a,int b)
{
    en[idx] = b;
    ne[idx] = h[a];
    h[a] = idx++;
}

bool torpsort()
{
    int bb = 0,ee = -1;
    for(int i = 1;i<=m;i++)
    if(!d[i]) q[++ee] = i;

    while(ee>=bb)
    {
        int t = q[bb++];
        for(int i = h[t];i!=-1;i = ne[i])
        {
            int j = en[i];
            d[j]--;
            if(d[j]==0) q[++ee] = j;
        }
    }
    return ee == m-1;
}

int main()
{
    scanf("%d%d",&m,&n);
    memset(h,-1,sizeof h);
    while(n--)
    {
        int a,b;
        scanf("%d%d",&a,&b);
        add(a,b);
        d[b]++;
    }
    if(torpsort())
    {
        for(int i = 0;i<m;i++)
        printf("%d ",q[i]);
        printf("\n");
    }
    else cout<<"-1"<<endl;
    return 0;
}


活动打卡代码 AcWing 847. 图中点的层次

evil_7
1个月前
//这里填你的代码^^
//注意代码要放在两组三个点之间,才可以正确显示代码高亮哦~#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;

const int N = 100010;

int m,n;
int h[N],en[N],ne[N];
int idx;
int d[N];
int q[N];

void add(int a,int b)
{
    en[idx] = b;
    ne[idx] = h[a];
    h[a] = idx++;
}

int bfs()
{
    int bb = 0,ee = 0;
    memset(d,-1,sizeof d);
    d[1] = 0;
    q[0] = 1;
    while(ee>=bb)
    {
        int t = q[bb++];
        for(int i = h[t];i!=-1;i = ne[i])
        {
            int j= en[i];
            if(d[j]==-1)
            {
                d[j] = d[t] +1;
                q[++ee] = j;
            }
        }
    }
    return d[m];
}


int main()
{
    memset(h,-1,sizeof h);
    cin>>m>>n;
    while(n--)
    {
        int a,b;
        scanf("%d%d",&a,&b);
        add(a,b);
    }
    cout<<bfs()<<endl;
    return 0;
}


活动打卡代码 AcWing 847. 图中点的层次

evil_7
1个月前
//这里填你的代码^^
//注意代码要放在两组三个点之间,才可以正确显示代码高亮哦~
#include <iostream>
#include <cstring>

using namespace std;

const int N = 100010;
int h[N],en[N],ne[N];
int idx;

int m,n;
int d[N];
int q[N];

void add(int a,int b)
{
    en[idx] = b;
    ne[idx] = h[a];
    h[a] = idx++;
}

int bfs()
{
    //广度算法,一定离不开队列

    memset(d,-1,sizeof d);
    d[1] = 0;
    int bb = 0,ee = 0;
    q[0] = 1;
    while(ee>=bb)
    {
    int t = q[bb++];
    for(int i = h[t];i!=-1;i = ne[i])
    {
        int j = en[i];
        if(d[j]==-1)
        {

            q[++ee] = j;
            d[j] = d[t] +1;
        }
    }
    }
   return d[m];
}

int main()
{
    memset(h,-1,sizeof h);
    scanf("%d%d",&m,&n);
    while(n--)
    {
        int a,b;
        scanf("%d%d",&a,&b);
        add(a,b);
    }
    cout<<bfs()<<endl;
    return 0;
}


活动打卡代码 AcWing 846. 树的重心

evil_7
1个月前
//这里填你的代码^^
//注意代码要放在两组三个点之间,才可以正确显示代码高亮哦~
#include <iostream>
#include <algorithm>
#include <cstring>

using namespace std;

const int N = 100010;
const int M = 2*N;

int h[N],en[M],ne[M];
int idx;
int x;
int ans = N;
int st[N];

void add(int a,int b)
{
    en[idx] = b;
    ne[idx] = h[a];
    h[a] = idx++;
}

int dfs(int g)
{
    st[g] = 1;
    int res = 0;
    int sum = 1;
    for(int i = h[g];i!=-1;i = ne[i])
    {
        int j = en[i];
        if(!st[j])
        {
            int s = dfs(j);
            sum+=s;
            res = max(res,s);
        }
    }
    res = max(res,x-sum);
    ans = min(ans,res);
    return sum;
}


int main()
{
    cin>>x;
    memset(h,-1,sizeof h);
    for(int i = 1;i<x;i++)
    {
        int a,b;
        cin>>a>>b;
        add(a,b);
        add(b,a);
    }
    dfs(1);
    cout<<ans<<endl;
    return 0;
}