《TC训练赛一》题解!
以下题目标题就是此题题目链接,题目内容为了节省篇幅就不粘上去了。整套题的链接:https://acm.bnu.edu.cn/v3/contest_show.php?cid=8679#info 密码:7116
题意很明显,就不过多说明了。
此题需要注意的是n为32位整数,即int型,最好特判一下n为0的情况;还有如果n为负数,要提前输出一个负号。最后输出的时候逆着输出来,可以手动模拟一下二进制的转化过程。
#include <map>
#include <set>
#include <queue>
#include <stack>
#include <cmath>
#include <vector>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include<functional>
using namespace std;
typedef long long LL;
#define pi 3.141592653
const int INF=1e9;
//const int N=100000+10;
char f[6]={'A','B','C','D','E','F'};//给定的R<=16,16进制到f就可以了;
char b[35];
int main()
{
int n,m;
while(~scanf("%d%d",&n,&m))
{
if(n<0)
{
printf("-");
n=-n;//将其转化为正数便于求解;
}
if(n==0)
{
printf("0\n");
continue;//直接进入下一层循环,不会继续往下执行了;
}
int len=0;//表示数组长度;
while(n)//这里也可以写成while(n!=0)
{
int x=n%m;
if(x<10)
b[len++]=x+'0';//加'0'表示转化成char型,可以查查ASCII表看看他们之间的关系;
else b[len++]=f[x-10];
n/=m;
}
for(int i=len-1;i>=0;i--)//注意要倒着输出;
printf("%c",b[i]);//只接了一条语句可以不用加中括号;
printf("\n");
}
}//每一条语句都是一个知识点,基础抓牢了才能更进一步!
int main()//为了节省篇幅以上的头文件我就不贴出来了;
{
int t,a,b,r;//用a来表示SA选手的得分,
scanf("%d",&t);
while(t--)
{
scanf("%d%d%d",&a,&b,&r);
if(abs(a-b)>r) printf("yes\n");
else printf("no\n");//只有两种情况
}
return 0;
}//代码是不是很简洁啊,多多刷题你也可以的!
char s[55];//最大长度为50,数组空间应该稍微开大一点;
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
scanf("%s",s);
int f1=0,f2=0,f3=0,f4=0;
int len=strlen(s);//此函数用来测字符串长度,书的144页,很实用。
if(len<8||len>16)
{
printf("NO\n");
continue;
}
else
{
for(int i=0;i<len;i++)//字符型数组是从0开始的到len-1正好len的长度;
{
if(s[i]>='A'&&s[i]<='Z') f1=1;//满足条件则将此变量赋为1表示真;
else if(s[i]>='a'&&s[i]<='z') f2=1;
else if(s[i]>='0'&&s[i]<='9') f3=1;
else f4=1;
}
if(f1+f2+f3+f4>=3)//至少满足4种字符里的3种;
printf("YES\n");
else printf("NO\n");
}
}
return 0;
}
代码二:
char s[55];//最大长度为50,数组空间应该稍微开大一点;
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
scanf("%s",s);
int f1=0,f2=0,f3=0,f4=0;
int i;
for(i=0; s[i]!='\0'; i++) //字符串以'\0'结束,不计入总长度;
{
if(s[i]>='A'&&s[i]<='Z') f1=1;
else if(s[i]>='a'&&s[i]<='z') f2=1;
else if(s[i]>='0'&&s[i]<='9') f3=1;
else f4=1;//满足条件则将此变量赋为1表示真;
}
if((i<8||i>16)||(f1+f2+f3+f4<3))
printf("NO\n");
else printf("YES\n");
}
return 0;
}
#include <map>
#include <set>
#include <queue>
#include <stack>
#include <cmath>
#include <vector>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include<functional>
using namespace std;
typedef long long LL;
#define pi 3.141592653
const int INF=1e9;
int judge(long long x,long long y,long long z)
{
if(x+y==z) return 1;//return语句是整个函数的结束标志;
if(y!=0&&x%y==z) return 1;
if(x*y==z) return 1;
return 0;//以上都不符合则返回0表示假;
}
int main()
{
long long a,b,c;
while(~scanf("%I64d%I64d%I64d",&a,&b,&c))
{
int x1=judge(a,b,c);
int x2=judge(a,c,b);
int x3=judge(b,a,c);
int x4=judge(b,c,a);
int x5=judge(c,a,b);
int x6=judge(c,b,a);
if(x1||x2||x3||x4||x5||x6)//任何一种为真都可以;
printf("oh,lucky!\n");
else printf("what a pity!\n");
}
return 0;
}
int main()
{
long long a,b,c;
while(~scanf("%I64d%I64d%I64d",&a,&b,&c))
{
if(a+b==c||a+c==b||a-c==b||a*b==c||a-b==c||c*a==b||c*b==a||(b!=0&&(a%b==c||c%b==a))||(a!=0&&(c%a==b||b%a==c))||(c!=0&&(a%c==b||b%c==a)))
printf("oh,lucky!\n");
else printf("what a pity!\n");
}
return 0;
}
#include<stdio.h>
#include<algorithm>
#include<iostream>
#include<string.h>
using namespace std;
int main()
{
int n,m;
while(~scanf("%d%d",&n,&m))
{
if(n==0&&m==0)
break;
int flag=0;
for(int i=-9999;i<=9999;i++)
{
if(i*(n-i)==m)
{
flag=1;
break;
}
}
if(flag)
printf("Yes\n");
else
printf("No\n");
}
return 0;
}
#include<stdio.h>
#include<math.h>
int main()
{
int n,m;
while(~scanf("%d%d",&n,&m))
{
if(n==0&&m==0)
break;
double b1=(n+sqrt(n*n-4*m))/2;
double b2=(n-sqrt(n*n-4*m))/2;
if((int)b1==b1||(int)b2==b2)
printf("Yes\n");
else
printf("No\n");
}
return 0;
}
#include <map>
#include <set>
#include <queue>
#include <stack>
#include <cmath>
#include <vector>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include<functional>
using namespace std;
typedef long long LL;
#define pi 3.141592653
const int INF=1e9;
int main()
{
int n,m;
while(~scanf("%d%d",&n,&m))
{
if(n==0&&m==0)
break;
int temp=n*n-4*m;//求根公式;
if(temp<0)
{
printf("No\n");
continue;
}
int x1=(n-(int)sqrt(temp))/2;
int x2=(n+(int)sqrt(temp))/2;
if(x1*(n-x1)==m||x2*(n-x2)==m)//判断是否符合条件;
printf("Yes\n");
else printf("No\n");
}
return 0;
}
题意给你两个数表示网格的高和宽,图片可能加载不出来,原图:
这是一个2X4的网格,问里面有多少个矩形。很明显上图有30个。
那么怎么做呢,我们观察发现一个小矩形有两条横线和两条竖线(提示到这了,还不会就说不过去。 。。。)这就是一个组合问题嘛,总共n+1条横线,m+1条竖线。随便选两条都可以组成一个矩形。。
int main()
{
int t,n,m;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&m);
printf("%d\n",(n+1)*n/2*(m+1)*m/2);
}
return 0;
}
这道题考的就是一个排序问题,排好序后直接输出第二个数即可。可以用冒泡排序、选择排序、sort()函数。
int a[15];
int main()
{
int t,n;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
sort(a,a+n);
printf("%d\n",a[1]);//下标从0开始所以a[1]是第二个;
}
return 0;
}
int a[15];
int main()
{
int t,n;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
for(int i=0;i<n;i++)
{
for(int j=0;j<n-i-1;j++)
if(a[j]>a[j+1])
swap(a[j],a[j+1]);
}
printf("%d\n",a[1]);
}
return 0;
}
int judge(int x)
{
for(int i=2;i<=sqrt(x);i++)
if(x%i==0) return 0;
return 1;
}
int main()
{
int n;
while(~scanf("%d",&n)&&n)//这里也可以写成 &&n!=0
{
int ans=0;//注意每组数据的答案都要先初始化;
for(int i=2;i<=n/2;i++)
if(judge(i)&&judge(n-i)&&2*i!=n)//注意是不同的素数和;
ans++;
printf("%d\n",ans);
}
return 0;
}
void init()//素数预处理打表便于查询;
{
memset(a,-1,sizeof(a));
a[0]=a[1]=0;
for(int i=2; i<N; i++)
if(a[i])
{
if(i>N/i) continue;
for(int j=i*i; j<N; j+=i)
a[j]=0;
}
}
int main()
{
init();
int n;
while(~scanf("%d",&n)&&n)
{
int ans=0;
for(int i=2; i<=n/2; i++)
if(a[i]&&a[n-i]&&i*2!=n)
ans++;
printf("%d\n",ans);
}
return 0;
}
样例基本上可以解释题意了,就问你怎么求出这个分数矩阵的值了。
其实仔细观察可以发现这是一个规律题的,找规律就好了。
int main()
{
int n;
while(~scanf("%d",&n)&&n)
{
double ans=0;
for(int i=1;i<=n;i++)
{
if(i==1) ans+=n;
else ans+=2.0*(n-i+1)/i;
}
printf("%.2lf\n",ans);
}
return 0;
}
国庆的题的水平,用来签到的。最小公倍数等于两数之积除以最大公约数。用辗转相除法求最大公约数。也可以用递归求解,原理类似。
int gcd(int a,int b)
{
while(b)
{
int c=a%b;
a=b;
b=c;
}
return a;
}
int main()
{
int t,n,m;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&m);
int max_factor=gcd(n,m);
int min_dev=n*m/max_factor;
printf("%d %d\n",max_factor,min_dev);
}
return 0;
}
int gcd(int a,int b)
{
return b==0?a:gcd(b,a%b);
}
int main()
{
int t,n,m;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&m);
int max_factor=gcd(n,m);
int min_dev=n*m/max_factor;
printf("%d %d\n",max_factor,min_dev);
}
return 0;
}
所给的字符串已知长度是偶数,设为len,但字符数组下标从0开始,故最后一位len-1为奇数,len-2为偶数;要实现奇偶位互换,只需当遇到偶数位时先将后一位输出,再输出这一位。
char a[55];
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
scanf("%s",a);
int len=strlen(a);
for(int i=0;i<len;i++)
if(i%2==0)
{
printf("%c%c",a[i+1],a[i]);
}
printf("\n");
}
return 0;
}
本场联系题的全部题解呈上。本来这套题要给大家用来做周赛的,不过遇到点小问题,所以。。。。但如果大家把这套题吃透了,,,说明大家的水平又上了一级。希望大家认真对待。
《TC训练赛一》题解!的更多相关文章
- 《串并行数据结构与算法(SML语言)实验》题解
注意:本题解仅供参考学习,请勿直接抄袭代码,否则造成的后果和笔者无关. 第一题: 题意: 对n个数升序排序. 题解: 快排,不解释. 代码(省略了输入输出函数,下同): val n = getInt ...
- 数据结构1:数据结构与算法C语言版分析概述
本节开始将带领大家系统地学习数据结构,作为一门计算机专业大二学生的必修课程,该课程面对的目标人群为初步具备基本编程能力和编程思想的程序员(大一接触了 C 语言或者 C++).通过系统地学习数据结构,可 ...
- 数据结构与算法C语言实现笔记(1)--表
声明:此一系列博客为阅读<数据结构与算法分析--C语言描述>(Mark Allen Weiss)笔记,部分内容参考自网络:转载请注明出处. 1.表 表是最简单的数据结构,是形如A1.A2. ...
- 数据结构与算法 Python语言实现 第一章练习
说明:部分代码参考了Harrytsz的文章:https://blog.csdn.net/Harrytsz/article/details/86645857 巩固 R-1.1 编写一个Python函数 ...
- 《数据结构与算法(C语言版)》严蔚敏 | 第五章 建立二叉树,并完成三/四种遍历算法
PS:所有的代码示例使用的都是这个图 2019-10-29 利用p126的算法5.3建立二叉树,并完成三种遍历算法 中序 后序 先序 #include<iostream> #include ...
- 《数据结构与算法Python语言描述》习题第二章第三题(python版)
ADT Rational: #定义有理数的抽象数据类型 Rational(self, int num, int den) #构造有理数num/den +(self, Rational r2) #求出本 ...
- 《数据结构与算法Python语言描述》习题第二章第二题(python版)
ADT Date: #定义日期对象的抽象数据类型 Date(self, int year, int month, int day) #构造表示year/month/day的对象 difference( ...
- 《数据结构与算法Python语言描述》习题第二章第一题(python版)
题目:定义一个表示时间的类Timea)Time(hours,minutes,seconds)创建一个时间对象:b)t.hours(),t.minutes(),t.seconds()分别返回时间对象t的 ...
- 数据结构与算法C语言所有头文件汇总 —— 持续更新
header.h // 顺序表的结构定义 #define Maxsize 100 //const int Maxsize = 100; // 预先定义一个足够大的常数 typedef struct { ...
- 《数据结构与算法(C语言版)》严蔚敏 | 第四章课本案例
//二叉树的顺序存储表示 #define MAXTSIZE 100 typedef TElemtype SqBiTree[MAXTSIZE]; SqBiTree bt; //二叉树的二叉链表存储表示 ...
随机推荐
- LVS实现负载均衡
三台主机模拟 sishen_63(分发器): eth0(Bridge):192.168.1.63 eth1(vmnet4):192.168.2.63 sishen_64(RealServer1): e ...
- CGI和Servlet的比较
转载自:http://www.maxhis.info/java/cgi-vs-servlet/ 概括来说,CGI和Servlet可以完成相同的功能. CGI(Common Gateway Interf ...
- 01.第一章_C++ Primer学习笔记_开始
1.2 初始输入输出 iostream库里面包含两个基础类型istream和ostream,分别表示输入流和输出流,一个流就是一个字符序列,从IO设备读出或者写入IO设备. 标准的输入输出对象 标准库 ...
- AJPFX总结java 中类的创建和使用
//面向对象中类的创建和 调用 ============================================================= 类的使用: 类的使用分为两个动作:创建对象与 ...
- H+后台主题UI框架---整理(三)
这里面介绍下H+后台主题UI框架里面插件的应用,不过都是最最简单最初级的功能.主要有日历插件,input单选多选(icheck)插件,input下拉搜索(chosen)插件. 一.日历插件 有如下几种 ...
- 洛谷P2763 试题库问题(最大流)
题意 $n$道试题,每道题有多种类别属性 抽取$m$道题组成试卷,要求包含指定的类型 输出方案 Sol 又是一道zz网络流 我的构图长这样,$k_i$表示第$i$道试题需要的数量 #include&l ...
- Android学习笔记(十六) ContentProvider
1.相关概念 ContentProvider:不同应用程序之间进行数据交换的标准API:程序“暴露”数据的方法. ContentResolver:一个程序访问另一个程序被“暴露”的数据的方法. Uri ...
- java.lang.NoSuchMethodError: javax.persistence.OneToMany.orphanRemoval()
原因:hibernate-jpa-2.0-api-1.0.0.Final.jar.ejb3-persistence.jar中的javax.persistence与javaEE 5 Librares中的 ...
- c++正则表达式模板库GRETA的使用
GRETA是微软研究院的一位前员工开发并开源的一个C++正则表达式库,兼容perl正则语法 官方介绍:“A fast, flexible, perl-compliant regular express ...
- qs库 是将url参数和json互转 | query strings 缩写 | import qs from 'qs'
import qs from 'qs' 1.npm地址 https://www.npmjs.com/package/qs 2.概述 将url中的参数转为对象: 将对象转为url参数形式 3.示例 ...