西南民族大学校赛
D题
话说这题还真的没看清楚题目,我开始以为他要构成一个环,不管是三元环还是四元环。写了半天没写出来。自己水平还真是差的。
链接:https://ac.nowcoder.com/acm/contest/322/D
来源:牛客网
题目描述
一天小A在金色的银杏树下向他喜欢的小姐姐B表白了,“对不起,我喜欢的是C”,B这样说道,小A尴尬的笑了笑转身离开了。他心里默默说着“对不起,C喜欢我。”(233333333)
Love triangle被定义为:如果A喜欢B,B喜欢C,C喜欢A则称为Love triangle。现在让你寻找有没有Love triangle。
输入描述
第一行一个正整数N(n<=5000),第二行n个数X1,X2,X3……Xn代表i喜欢Xi。
输出描述
如果存在Love triangle则输出YES,没有则输出NO。
示例1
输入
5
2 4 5 1 3
输出
YES
#include<bits/stdc++.h>
#define N 5005
int a[N];
using namespace std;
int main()
{
int t,i,sum=0;
cin>>t;
for(i=1;i<=t;i++)
{
cin>>a[i];
}
for(i=1;i<=t;i++)
if(a[a[a[i]]]==i)
{
sum=1;
break;
}
if(sum==1)
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
}
k题
这一题没什么好说的啦!我开始以为要输出的Yes和No都是大写,当然还有一点其他的小毛病。
链接:https://ac.nowcoder.com/acm/contest/322/K
来源:牛客网
已知一个正方体,每个面上都有任意一个数(假设每一面的面积足够大来装下当前面上的数字),现被展开成了如下形式:
输入中保证第一行有一个面,第二行有四个面,第三行有一个面。请用代码检查这个正方体对立面上的数是否相同。
输入描述:
输入包含多个测试样例。第一行为一个整数T(1 <= T <= 1e4),接下来每个样例占3行,每行都包括4个数,为0表明当前位置不表示面,每个面上的数值范围不超过int。
输出描述:
对于每个测试样例,如果当前正方体的三个对立面的数都分别相同的话就输出”Yes!”,否则输出”No!”。每个结果占一行,注意每50个结果要加一个空行。
示例
3
0 2 0 0
1 3 1 3
0 2 0 0
0 2 0 0
1 3 1 3
0 0 0 2
0 0 0 2
1 2 2 1
0 0 1 0
输出
Yes!
Yes!
No!
#include<iostream>
using namespace std;
int a[5],b[5],c[5];
int main()
{
int t,i,j,k=0;
cin>>t;
while(t--)
{
int p1,p2;
for(j=1;j<=4;j++)
{
cin>>a[j];
if(a[j]!=0) p1 = j;
}
for(j=1;j<=4;j++)
{
cin>>b[j];
}
for(j=1;j<=4;j++)
{
cin>>c[j];
if(c[j]!=0) p2 =j;
}
if(a[p1]!=c[p2] ||b[1]!=b[3] ||b[2]!=b[4])
{
cout<<"No!"<<endl;
}
else
{
cout<<"Yes!"<<endl;
}
k++;
if(k%50==0)
{
cout<<"\n";
}
}
return 0;
}
L题
这题主要是不知道有一个求最大公约数函数。好吧!经验不足,还有自己连一个求最大公约数的函数都写不出来,真想找个地缝钻进去。
链接:https://ac.nowcoder.com/acm/contest/322/L
来源:牛客网
John最近对分数很感兴趣,在研究分数的加减运算。现在要求计算两个分数的运算。
输入描述:
输入一个正整数T,表示有T组数据
每组数据包括5个整数op,a,b,c,d
op为1表示a/b + c/d;op为0表示为a/b – c/d
其中1 <= T, a,b,c,d <= 100;
输出描述:
输出分数运算结果“x/y”,要求x/y是最简分数。
#include <bits/stdc++.h>// 使用c++里面所有头文件
using namespace std;
int main(){
int T;
cin>>T;
int op,a,b,c,d;
while(T--){
cin>>op>>a>>b>>c>>d;
int fz = op?a*d+b*c:a*d-b*c;// (使用形式x?y:z,x==1时,打印y,x==0时打印z)
int fm = b*d;
int g = __gcd(fz,fm);// 得到分子与分母的最大公约数
fz /= g;
fm /= g;
if(fm<0){
fm = -fm;
fz = -fz;
}
cout<<fz<<"/"<<fm<<endl;
}
return 0;
}