厦门大学“网宿杯“17届程序设计竞赛决赛(同步赛)

A 这波啊,这波是.....
(水题)但我还是挖了一发,被样例给骗了
#include<iostream>
using namespace std;
int main()
{
    cout<<"roudancongji"<<endl;
}

B 李在赣神魔
(水题)
先存数组然后i,j调换,即可
顺时针
for(j=n-1;j>=0;j--)
    {
        for(i=0;i<n;i++)
        {
            cout<<a[i][j];
        }
        cout<<endl;
    }
逆时针
for(j=0;j<n;j++)
    {
        for(i=n-1;i>=0;i--)
        {
            cout<<a[i][j];
        }
        cout<<endl;
    }
完整代码:
#include<iostream>
using namespace std;
#define maxn 1005;
char a[maxn][maxn];
int main()
{
    int n,i,j;
    cin>>n;
    for(i=0;i<n;i++)
    {
        for(j=0;j<n;j++)
        {
            cin>>a[i][j];
        }
    }
    for(j=0;j<n;j++)
    {
        for(i=n-1;i>=0;i--)
        {
            cout<<a[i][j];
        }
        cout<<endl;
    }
}
C 电竞希金斯
if判断题,分类讨论即可
#include<iostream>
#include<cstdio>
#include<string.h>
#include<string>
#include<cmath>
#include<algorithm>
#define IO ios::sync_with_stdio(false), cin.tie(0)
typedef unsigned long long ull;
typedef long long ll;
#pragma GCC optimize(2)
using namespace std;
int main()
{
    IO;
    double a,b,c;
    cin>>a>>b>>c;
    a=-1*a;
    c=-1*c;
    //cout<<c/b<<endl;
    double s=0,m;
    if(b==0)
    {
        if(a==0)
        {
            cout<<"non"<<endl;
        }
        else
        {
            m=(-1)*c/a;
            if(m>0)
            {
                cout<<"1 4"<<endl;
            }
            else if(m<0)
            {
                cout<<"2 3"<<endl;
            }
            else
            {
                cout<<"non"<<endl;
            }
        }
    }
    else
    {
        s=a/b;
        m=c/b;
        if(s>0)
        {
            if(m>0)
            {
                cout<<"1 2 3"<<endl;
            }
            else if(m<0)
            {
                cout<<"1 3 4"<<endl;
            }
            else
            {
                cout<<"1 3"<<endl;
            }
        }
        else if(s<0)
        {
            if(m>0)
            {
                cout<<"1 2 4"<<endl;
            }
            else if(m<0)
            {
                cout<<"2 3 4"<<endl;
            }
            else
            {
                cout<<"2 4"<<endl;
            }
        }
        else
        {
            if(m>0)
            {
                cout<<"1 2"<<endl;
            }
            else if(m<0)
            {
                cout<<"3 4"<<endl;
            }
            else
            {
                cout<<"non"<<endl;
            }
        }
    }
}
F 这题多捞啊
1. x[1]+x[2]+...+x[n]=2n
2. 不存在一个划分将集合划分成和相等的两部分,也就是说,集合的任意子集和均不为n。
第二条是关键,分两种考虑,奇偶判断。假设输入4,那如果输出2 2 2 2,则违反第二条条件,即在第二个与第三个之间划分开来会形成和相等的两部分。因此输入偶数只能够输出一行结果;输入奇数,便可以输出两行结果。
在开始前做一个特判,如果输入1,则直接输出2.
#include<iostream>
using namespace std;
int main()
{
    ll n,i;
    cin>>n;
    if(n==1)
    {
        cout<<2<<endl;
    }
    else
    {
        if(n&1)
        {
            for(i=0;i<n-1;i++)
            {
                if(i)
                    cout<<' ';
                cout<<1;
            }
            cout<<' '<<n+1<<endl;
            for(i=0;i<n;i++)
            {
                if(i)
                {
                    cout<<' ';
                }
                cout<<2;
            }
            cout<<endl;
        }
        else
        {
            for(i=0;i<n-1;i++)
            {
                if(i)
                {
                    cout<<" ";
                }
                cout<<1;
            }
            cout<<' '<<n+1<<endl;
        }
    }
}




全部评论

相关推荐

鼗:眼睛打码有点那啥的味道
点赞 评论 收藏
分享
2024-11-18 13:45
已编辑
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务