week 16

1.

#include<bits/stdc++.h>
using namespace std;
long long a,b,flag1,flag2,flag3,num1[100],num2[100],t1,t2;
int main()
{
    cin>>a>>b;
    for (int i=2;i<=sqrt(a);i++)
    {
        if (a % i==0) flag1=1;
    }
    for (int i=2;i<=sqrt(b);i++)
    {
        if (b % i==0) flag2=1;
    }
    if (flag1==0 && flag2==0 && a!=b) 
    {
        cout<<"full credit";
        return 0;
    }
    if (a==b) 
    {
        cout<<"no credit";
        return 0;
    }
    
    int x=2,y=2;
    while(a>1)
    {
        if (a % x==0)
        {
            a=a/x;
            num1[++t1]=x;
            num1[++t1]=a;
            if ((a)%x==0) x--;
        }
        if (x>sqrt(a)) break;
        x++;
    }
    while(b>1)
    {
        if (b % y==0)
        {
            b=b/y;
            num2[++t2]=y;
            num2[++t2]=b;
            if ((b)%y==0) y--;
        }
        if (y>sqrt(b)) break;
        y++;
    }
    
    sort(num1+1,num1+t1+1);
    sort(num2+1,num2+t2+1);
 
    for (int i=1;i<=t1;i++)
    {
        for (int j=1;j<=t2;j++)
        {
            if (num1[i]==num2[j] || num1[i]==num1[i+1] || num2[j]==num2[j+1]) 
            {
                flag3=1;
                break;
            }
        }
        //cout<<flag3<<endl;
    }
    for (int i=1;i<=t1;i++)    
    if (num1[i]==num1[i+1]) 
            {
                flag3=1;
                break;
            }
    for (int j=1;j<=t2;j++)
        {
            if (num2[j]==num2[j+1]) 
            {
                flag3=1;
                break;
            }
        }
    if (flag3==1) 
    {
        cout<<"no credit";
    }
    else cout<<"partial credit";
 } 

2.

#include<bits/stdc++.h>
using namespace std;
int t,n;
int main()
{
    scanf("%d",&t);
    for (int i=1;i<=t;i++)
    {
        scanf("%d",&n);
        int a[n+5];
        for (int j=1;j<=n;j++) scanf("%d",&a[j]);
        int num=a[n],sum=1,ans=0;
        a[0]=num;
        for (int j=n;j>1;j--)
        {
            if (a[j]==num && a[j-1]!=num)
            {
                ans++;
                j-=sum;
                a[j]=num;
                sum*=2;
                j++;
            }
            else sum++;
        }
        printf("%d\n",ans);
    }
}

3.

#include<bits/stdc++.h>
using namespace std;
int n,c,a[200005],f[10000000],ans; 
int main()
{
    cin>>n>>c;
    for (int i=1;i<=n;i++)
    {
        cin>>a[i];
        f[a[i]+c]++;
    }
    for (int i=1;i<=n;i++) ans+=f[a[i]];
    cout<<ans;

4

#include <bits/stdc++.h>
using namespace std;
int n,m,t;
unsigned long long ten[19]={0};
long long pl(long long x,int len)
{
    long long n=x-ten[len-1]+1;
    if(len==1)
    {
        return n*(n+1)/2;
    }
    return ((n % 998244353)*((n+1) % 998244353)/2 % 998244353 + pl(ten[len-1]-1,len-1)) % 998244353;
}
int main()
{
    long long x,y;
    int len=0;
    ten[0]=1;
    for(unsigned long long i=1,j=10;i<=18;i++,j*=10)
    {
        ten[i]=j;
    }
    cin>>x;
    y=x;
    while(y!=0)
    {
        len++;
        y/=10;
    }
    cout<<pl(x,len);
}

5

#include<bits/stdc++.h>
using namespace std;
unsigned long long ans,n,ad[1000005];
const int MOD=1000000007;
struct node
{
    unsigned long long a,b;
}p[1000005];
bool cmp(node x,node y)
{
    return x.b*(y.a-1)>y.b*(x.a-1);
}
int main()
{
    scanf("%d",&n);
    for (int i=1;i<=n;i++) scanf("%lld%lld",&p[i].a,&p[i].b);
    sort(p+1,p+n+1,cmp);
    ad[n]=1;
    for (int i=n-1;i>=1;i--)
    {
        ad[i]=ad[i+1]*p[i+1].a % MOD;    
    }
    for (int i=1;i<=n;i++)
    {
        ans+=ad[i]*p[i].b % MOD;
        ans %= MOD;
    }
    printf("%lld",ans%MOD);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值