拉到最下面可以看到题解哦!
A.找画笔
时间: 空间:
题目描述
豆豆对数字的执着,让他在理科领域游刃有余,但他近乎疯狂的投入也使父母有些担心,为了让孩子能够全面发展,决定拓宽他的学习领域。正好家旁边有个绘画培训中心就给豆豆报了名,学习绘画的第一天就让豆豆产生了浓厚的兴趣,还主动要求买了很多很多的画笔,画笔有多种颜色,豆豆有一个习惯就是同种颜色的画笔就买两支,一支备用,就这样总共攒了 N 支画笔( N 是偶数且 )。
可是数字的敏感无孔不入,豆豆脑里蹦出了一个奇怪的问题:如果蒙上眼任意拿走一支画笔,分析剩下的N-1支画笔找出拿走了哪种颜色,你能回答他吗?
输入格式
第一行:一个整数表示剩下的画笔个数就是题目描述中的 N-1
第二行:N-1个用空格隔开的正整数 ( ),表示剩下的画笔的颜色编号
输出格式
一行一个整数P,表示拿走的画笔的颜色编号
样例数据
【输入】
9
1 1 9 11 5 3 11 5 9
【输出】
3
B.三角形个数
时间: 空间:
题目描述
小圆点拉着太阳的胡须,在天空中晃来晃去,好不痛快。
可是,他手一松,“啪”从空中摔了下来,一下子摔到地上,有两条射线被小圆点扯掉下来啦。
“这怎么办呢?”小圆点对躺在地上的两条射线说。
“不要紧,我们请圆规大叔帮忙,让他把两条射线接起来。”这时,大铅笔博士出现了,笑眯眯地指着身后高高个子,戴一顶小黑帽子的圆规说。
圆规大叔弯了弯腰说:“能倒能,不过,连起来就不见得是一条直线了。”
“那是怎么回事呢?”小圆点问。
“我们来试一下就知道了。”圆规大叔边说边拉起了两条射线,把它们连在一起,结果呢?就连成了一个角!
现给出n个角的度数,从中选出度数各不相同的三个角来组成一个三角形,问一共有多少种选法?
输入格式
第一行:一个整数n(3 <= n <= 200000)。
第二行:n个空格隔开的整数ai(0 < ai < 180),表示每个角的度数。
输出格式
只有一个整数,表示能组成度数各不相同的三角形的选法总数。
样例数据
【输入】
5
20 20 30 130 140
【输出】
2
数据规模与约定
30%的数据:n≤20
50%的数据:n≤100
80%的数据:n≤5000
100%的数据:n≤200000
C.宝箱密码
题目描述
海盗王将自己的宝藏藏在了一个宝箱里,只有一次开锁的机会,密码输错宝箱就会永久锁死。
小明意外的得到了这个宝箱,经过详细的研究,他发现海盗王很喜欢数字129,并且在图书馆里找到了海盗王的一段手稿,上面有一段描述:“那些除不完的数,就是我喜欢的”,然后是一大串包含数字的字符串。于是,小明大胆的猜测,从字符串中提炼所有的数字串,所有数字串对129求余,将这些余数加起来,就是宝箱的密码。
编写程序,输入一个字符串,提取里面所有的完整数字串,对129求余,将所有的余数累加起来输出。
输入格式
一行包含多个数字串的字符串(可能有空格)
输出格式
数字串对129求余,余数相加的结果
样例数据
【输入1】
Love me, love my dog, 54321and678
【输出1】
45
【样例1说明】
54321%129=12, 678%129=33, 结果为45。
【输入2】
hello, 00054321 , my phone is 9910。
【输出2】
118
【样例2说明】
54321%129=12,9910%129=106,结果为118
前面的0对结果没有用
数据规模与约定
40%的数据,字符串里的完整数字串长度<=9位
60%的数据,字符串里的完整数字串长度<=19位
100%的数据,字符串里的完整数字串长度<=30位
D.走迷宫
时间: 空间:
题目描述
一个迷宫,每次可按上左下右任一方向移动一个格子,每个格子最多经过1次(对同一条路径来说),有些格子被障碍物挡住了不能到达。
请你编程输出从给定起点到终点的最短距离(既路径上经过的格子个数),如果到达不了就输出-1。
输入格式
第一行三个正整数:n m分别表示迷宫的行和列,k表示障碍点个数
第二行四个正整数:起点坐标sx sy和终点坐标fx fy
接下来k行的数据,每行两个数表示障碍物所在的行列坐标
输出格式
一个正整数,表示最短距离
如果没有一条可行的路则输出-1
样例数据
【输入】
5 6 8
1 1 5 6
1 2
1 3
1 5
3 1
3 2
3 6
4 6
5 4
【输出】
9
数据规模与约定
1<=n, m <= 700
建议先自己做再看题解哦!
建议先自己做再看题解哦!
建议先自己做再看题解哦!
建议先自己做再看题解哦!
建议先自己做再看题解哦!
建议先自己做再看题解哦!
建议先自己做再看题解哦!
建议先自己做再看题解哦!
建议先自己做再看题解哦!
建议先自己做再看题解哦!
A.找画笔
【分析】
根据,。所以就是将所有数进行加法运算。
【代码】
#include<bits/stdc++.h>
using namespace std;
const int N=2e5+5,BIG=(1<<31)-1,SMALL=-(1<<31);
int main()
{
int a,b,c,d,e,f;
cin>>a>>b;
for(int i=1; i<a; i++)
{
cin>>c;
b=b^c;
}
cout<<b<<endl;
return 0;
}
B.三角形个数
【代码】
#include<bits/stdc++.h>
using namespace std;
const int N=2e5+5,BIG=(1<<31)-1,SMALL=-(1<<31);
int a[N],n;
long long tong[180],tot;//定义一个桶
int main()
{
cin>>n;
for(int i=1; i<=n; i++)
{
cin>>a[i];
tong[a[i]]++;
}
for(int i=1; i<=60; i++)
for(int j=i+1; j<=90; j++)
{
int k=180-i-j;
if(j<k)//判断是否相同
tot+=tong[i]*tong[j]*tong[k];//乘法原理
}
cout<<tot;
return 0;
}
C.宝箱密码
【代码】
#include<bits/stdc++.h>
using namespace std;
const int N=2e5+5,BIG=(1<<31)-1,SMALL=-(1<<31);
int main()
{
string s;
int l,sum=0,n;
getline(cin,s);//注意整行读入
s=" "+s+" ";//前后加空格
l=s.size();//取总长
for(int i=0; i<l; i++)
{
if('0'<=s[i]&&s[i]<='9')//判断是不是数字
{
if('0'>s[i-1]||s[i-1]>'9')//新的数字开始
n=s[i]-'0';
else
n=(n*10+s[i]-'0')%129;//每读一位就取余
}
else if('0'<=s[i-1]&&s[i-1]<='9')//如果不是数字并且前一个是数字那么这个数字读入完毕
sum+=n;//累加
}
cout<<sum<<endl;
return 0;
}
D.走迷宫
【分析】
队列queue
【代码】
#include<bits/stdc++.h>
using namespace std;
const int N=7e2+5,he=180,BIG=(1<<31)-1,SMALL=-(1<<31);
bool a[N][N],p[N][N];
//a是原地图,p是判断是否计算过这个点
int n,m;
int dir[4][2]= {{-1,0},{1,0},{0,-1},{0,1}};//四个方向
struct node//队列
{
int x,y;
int step;
};
queue < node > b;
void bfs(int x1,int y1,int x2,int y2)
{
p[x1][y1]=1;
node nmnm;
nmnm.step=0,nmnm.x=x1,nmnm.y=y1;
b.push(nmnm);
while(!b.empty())
{
nmnm=b.front();//取
b.pop();//弹出
if(nmnm.x==x2&&nmnm.y==y2)//判断终点
{
cout<<nmnm.step<<endl;
exit(0);//退出程序
}
for(int i=0; i<4; i++)
{
int nx=nmnm.x+dir[i][0];//目标位置
int ny=nmnm.y+dir[i][1];
if(nx>0&&nx<=n&&ny>0&&ny<=m&&p[nx][ny]==0&&a[nx][ny]==0)
{//越界&&计算过&&能走
node nmnm1;
p[nx][ny]=1;
nmnm1.x=nx;
nmnm1.y=ny;
nmnm1.step=nmnm.step+1;
b.push(nmnm1);//存入
}
}
}
cout<<-1<<endl;//错误
}
int main()
{
int c,d,e,f,g,x1,y1;
cin>>n>>m>>c>>d>>e>>f>>g;
for(int i=1; i<=c; i++)
{
cin>>x1>>y1;
a[x1][y1]=1;
}
bfs(d,e,f,g);
return 0;
}