常州大学新生寒假训练会试


#include<bits/stdc++.h>
using namespace std;
stack<char>P;
int main()
{
    char t[33];
    while(~scanf("%s",&t))
    {
        int L=strlen(t),k=0;
        for(int i=L-1;i>=0;i--)
        {
            if(k==3)
            {
                P.push(',');
                k=0;
            }
            P.push(t[i]);
            k++;
        }
        while(!P.empty())
        {cout<<P.top();
        P.pop();
        }
        cout<<endl;
    }
    return 0;
}


#include<bits/stdc++.h>
using namespace std;
int main()
{
    long long n,m;
    while(~scanf("%lld%lld",&n,&m))
    {
        long long s=0,t=1;
        while(n%2==1&&m%2==1)
        {
            s+=t;
            t=t*4;
            n=n/2;m=m/2;
        }
        printf("%lld\n",s);
    }
    return 0;
}




#include<bits/stdc++.h>
using namespace std;
struct node
{
    int x,y,z;
}a[100003];
bool cmp(node a,node b)
{
    if(a.x!=b.x)
        return a.x<b.x;
    else if(a.y!=b.y)
        return a.y<b.y;
    return a.z<b.z;
}
int main()
{
    int n;
    while(~scanf("%d",&n))
    {
        int i,j;
        for(i=0;i<n;i++)
            scanf("%d%d%d",&a[i].x,&a[i].y,&a[i].z);
        sort(a,a+n,cmp);
        for(i=0;i<n;i++)
            printf("%d %d %d\n",a[i].x,a[i].y,a[i].z);
    }
    return 0;
}




开始的时候除以2*n放在了最后,一直爆long long 
差点写个高精度,后来想到把n提到前面,可以
避免三个连乘爆long long.

#include<bits/stdc++.h>
using namespace std;
int main()
{
    long long n,A0,An;
    int Q;
    while(~scanf("%lld%lld%lld%d",&n,&A0,&An,&Q))
    {
        long long L=0,r=0;
        while(Q--)
        {
            scanf("%lld%lld",&L,&r);
            long long x,y;
            x=A0*(2*n-L-r)/n*(r-L+1)/2;
            y=An*(L+r)/n*(r-L+1)/2;
            printf("%lld\n",x+y);
        }
    }
    return 0;
}




自己写的时候什么小数化整数,整数化小数,还要考虑精度,
各种各样的问题,代码写了一长串终于过掉了,后来看了
别人的代码,学习了floor ceil 两个取整函数,完美解决
问题。
代码:

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int T;scanf("%d",&T);
    while(T--)
    {
        double a,b,c;scanf("%lf%lf%lf",&a,&b,&c);
        a=a*c/b;
        long long t=floor(a*1000);
        if(t%10<=4) printf("%.2lf\n",floor(a*100)/100.00);
        else if(t%10>=6)printf("%.2lf\n",ceil(a*100)/100.00);
        else
        {
            if(a*10000000-t*10000>0)printf("%.2lf\n",ceil(a*100)/100.00);
            else
            {
                t=t%100/10;
                if(t%2)
                    printf("%.2lf\n",ceil(a*100)/100.00);
                else
                    printf("%.2lf\n",floor(a*100)/100.00);
            }
        }
    }
    return 0;
}





暴力找一遍就好
代码:

#include<bits/stdc++.h>
int a[100005],b[100005],c[100005];
bool mp[100005];
using namespace std;
int main()
{
    int K,N,M,Q;
    scanf("%d%d%d%d",&K,&N,&M,&Q);
    int i,j;
    for(i=1;i<=N;i++)
    {
        scanf("%d%d%d",&a[i],&b[i],&c[i]);
    }
    memset(mp,0,sizeof(mp));
    for(i=1;i<=M;i++)
    {
        int x;scanf("%d",&x);
        mp[x]=1;
    }
    bool bb=1;
    while(bb)
    {
        bb=0;
        for(i=1;i<=N;i++)
        {
            int x=a[i],y=b[i],z=c[i];
            if(mp[x]&&mp[y]&&!mp[z])
            {
                mp[z]=1;bb=1;
            }
            if(mp[z]&&(!mp[x]||!mp[y]))
            {
                mp[x]=1;mp[y]=1;
                bb=1;
            }
        }
    }
    while(Q--)
    {
        int x;scanf("%d",&x);
        if(mp[x])printf("Yes\n");
        else printf("No\n");
    }
    return 0;
}



#include<cstdio>
using namespace std;
int main()
{
    int t[11];
    t[0]=0;
    t[1]=1;
    t[2]=1;
    t[3]=1;
    t[4]=2;
    t[5]=3;
    t[6]=5;
    t[7]=9;
    t[8]=18;
    t[9]=35;
    int n;
    while(~scanf("%d",&n))
    {
        printf("%d\n",t[n]);
    }
    return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值