首页 > 其他分享 >计概杂烩2014

计概杂烩2014

时间:2023-12-15 15:34:23浏览次数:40  
标签:main 计概 200 int scanf 杂烩 2014 include void

2015

两点间距离

#include <stdio.h>
#include<math.h>

double x1,y11,z1,x2,y2,z2;

int main(void) { 
	scanf("%lf,%lf,%lf\n%lf,%lf,%lf",&x1,&y11,&z1,&x2,&y2,&z2);
	double squ=(x1-x2)*(x1-x2)+(y11-y2)*(y11-y2)+(z1-z2)*(z1-z2);
	double ans=sqrt((x1-x2)*(x1-x2)+(y11-y2)*(y11-y2)+(z1-z2)*(z1-z2));
	printf("%.2lf\n",ans);
	return 0;
}

选美比赛

#include <stdio.h>

/* C语言初始模板程序 */

int main(void) { 
	char c;int x,b;scanf("%c%d",&c,&x);
	if(c=='M') b=x>100?1:0;
	else b=x>80?1:0;
	if(b) printf("Beauty\n");
	else printf("Not beauty\n");
	return 0;
}

正整数的约数数目

#include <stdio.h>

/* C语言初始模板程序 */

int main(void) { 
	int n,ans=0;scanf("%d",&n);
	for(int i=1;i<=n;++i)  
	    if(n%i==0) ++ans;
	printf("%d\n",ans);
	return 0;
}

级数求和

#include <stdio.h>

int main(void) { 
	double cnt=0;
	int n,i=1;scanf("%d",&n);
	while(cnt<=n)
	{
	    cnt+=1.0/i++;
//	    printf("%.2lf\n",cnt);
	}
	printf("%d\n",i-1);
	return 0;
}

这里注意精度,用1.0而不是1

正整数的最大公约数和最小公倍数

#include <stdio.h>

int n,a[100],gcd=1,lcm=1,maxx=1;

int main(void) { 
	scanf("%d",&n);
	for(int i=1;i<=n;++i)
	{
	    scanf("%d",&a[i]);
	    maxx*=a[i];
	}
	for(int i=1;i<=a[1];++i)
	{
	    int b=0;
	    for(int j=1;j<=n;++j)
	        if(a[j]%i)
	        {
	            b=1;break;
	        }
	    if(b==0) gcd=i;
	}
	for(int i=a[n];i<=maxx;++i)
	{
	    int b=0;
	    for(int j=1;j<=n;++j)
	    {
	        if(i%a[j])
	        {
	            b=1;break;
	        }
	    }
	    if(b==0)
	    {
	        lcm=i;
	        break;
	    }
	}
	printf("%d %d\n",gcd,lcm);
	return 0;
}

直接枚举并判断即可

颜值测试

#include <stdio.h>

int a[200][200],b[200][200];

int main(void) { 
	int n,m;scanf("%d%d",&n,&m);
	for(int i=1;i<=n;++i)
	    for(int j=1;j<=m;++j)
	        scanf("%d",&a[i][j]);
	for(int i=1;i<=n;++i)
	    for(int j=1;j<=m;++j)
	        scanf("%d",&b[i][j]);
	for(int i=1;i<=n;++i,printf("\n"))
	    for(int j=1;j<=m;++j)
	        if(j==m)
	            printf("%d",a[i][j]-b[i][j]);
    	    else
	            printf("%d ",a[i][j]-b[i][j]);
	return 0;
}

IBM编码

#include <stdio.h>
#include<string.h>

char a[100];

int main(void) { 
	int n;scanf("%d\n",&n);
	while(n--)
	{
	    gets(a);int l=strlen(a);
	    for(int i=0;i<l;++i)
	    {
	        if((a[i]>='A'&&a[i]<='Z')||(a[i]>='a'&&a[i]<='z'))
	        {
	            a[i]++;
	            if(a[i]=='Z'+1||a[i]=='z'+1)
	                a[i]-=26;
	        }
	    }
	    puts(a);
	}
	return 0;
}

表示大整数

#include <stdio.h>
#include <string.h>

int n,k;
char a[100][100];

int main(void) { 
	scanf("%d\n",&n);
	while(n--)
	{
	    scanf("%s",a[n]);int l=strlen(a[n]);
	    scanf(" %d\n",&k);
	    if(a[0]=='-') printf("-");
	    for(int i=0;i<l;++i)
	    {
	        if(a[i]=='-') continue;
	        if((l-i-1)%k==0&&a[n][i]!='-'&&i!=l-1)
	            printf("%c,",a[n][i]);
	        else printf("%c",a[n][i]);
	    }
	    printf("\n");
	}
	return 0;
}

注意负数要往前移一个

医院排号

#include <stdio.h>

int t,n,k;
int a[2000],b[2000];

int main(void) { 
	scanf("%d",&t);
	while(t--)
	{
	    scanf("%d%d",&n,&k);
	    for(int i=1;i<=n;++i) {scanf("%d",&a[i]);b[i]=i;}
	    for(int i=1;i<n;++i)
	        for(int j=i+1;j<=n;++j)
	            if(a[i]<a[j]||(a[i]==a[j]&&b[i]>b[j]))
	            {
	                int tmp=a[i];a[i]=a[j];a[j]=tmp;
	                tmp=b[i];b[i]=b[j];b[j]=tmp;
	            }
	    k=k<n?k:n;printf("%d\n",k);
	    for(int i=1;i<=k;++i)
	        if(i==k)
	            printf("%d",b[i]);
	        else printf("%d ",b[i]);
	   printf("\n");
	}
	return 0;
}

铺地板

#include <stdio.h>
#include <string.h>

int a[200][200];
int n;

int f(int x)
{
	return x<1||x>n;
}

int main(void) { 
	scanf("%d",&n);
	int x1=-1,y1=1,x=1,y=1;
	for(int i=1;i<=n*n;++i)
	{
		a[x][y]=i;
		if(f(x+x1)&&f(y+y1))
		{
			if(x+x1==0) {x++;x1=-x1;y1=-y1;}
			if(y+y1==0) {y++;x1=-x1;y1=-y1;}
		}
		else if(f(x+x1)) {y++;x1=-x1;y1=-y1;}
		else if(f(y+y1)) {x++;x1=-x1;y1=-y1;}
		else {x+=x1;y+=y1;}
	}
	for(int i=1;i<=n;++i)
		for(int j=1;j<=n;++j)
			if(j!=n) printf("%d ",a[i][j]);
			else printf("%d\n",a[i][j]);
	return 0;
}

找规律填数即可,这里f函数是算某个坐标是否出界的。
注意前半个三角形和后面半个中间规律可能发生了变化,判断一下即可。

整数删除若干数字后的最小数

#include <stdio.h>
#include <string.h>
char a[200],q[200];
int k,m,cnt;

int main(void) { 
	scanf("%s",a);scanf("%d",&k);
	int l=strlen(a),l1=0,l2=l-k;
	q[0]=a[0];
	for(int i=1;i<l;++i)
	{
//	    if(k==0) break;
	    if(cnt==-1) q[++cnt]=a[i];
	    else if(q[cnt]>a[i]&&k!=0)
	    {
	        --k;--cnt;--i;
	    }
	    else
	    {
	        q[++cnt]=a[i];
	    }
	}
	while(q[l1]=='0') ++l1;
	for(int i=l1;i<l2;++i) printf("%c",q[i]);
	if(l1>=l2) printf("0\n");
	return 0;
}

思路:删除两边的k个数就相当于留下中间的n-k个数,使中间连续n-k个数最小,可以用前缀和处理。

前缀和:设\(b[1]=a[1],b[i]=b[i-1]+a[i](i>=2)\)

(即\(b[i]=a[1]+a[2]+...+a[i]\))

那么a数组中间第i个到第i+m个的和就是\(b[i+m]-b[i-1]\)

这样就避免了一次一次计算的超时。

(连载中。。。。。。

标签:main,计概,200,int,scanf,杂烩,2014,include,void
From: https://www.cnblogs.com/oierwyh/p/17903469.html

相关文章

  • P3163 [CQOI2014] 危桥
    题意给定一张无向图。其中某些边只能走\(2\)次。你要从\(a_1\)走到\(a_2\)\(a_n\)次,\(b_1\)走到\(b_2\)\(b_n\)次。问是否能实现。Sol不难想到连边跑网络流。但是,只能走\(2\)次的限制无法满足。注意到是无向图,所以我们交换其中一个起点终点。不难发现这样过......
  • P8614 [蓝桥杯 2014 省 A] 波动数列
    这道题的精髓在于DP公式的推理#include<iostream>#include<stdio.h>#include<algorithm>#include<cstring>usingnamespacestd;constintN=1005,mod=100000007;intn,s,a,b;intdp[N*N];intmain(){cin>>n>>s......
  • P8613 [蓝桥杯 2014 省 B] 小朋友排队
    因为相邻两个数字交换,每次只能减少一个逆序对数量,所以这道题最终的交换次数就等于原序列当中逆序对的数量。但是因为每个数字的交换代价会随着交换次数而增加,所以虽然我们知道Σ数字交换次数=逆序对数量,我们也不能按照传统的逆序对数量统计方式直接计算,这样子会导致我们只知道......
  • [NOI2014] 起床困难综合症
    [NOI2014]起床困难综合症题目描述\(21\)世纪,许多人得了一种奇怪的病:起床困难综合症,其临床表现为:起床难,起床后精神不佳。作为一名青春阳光好少年,atm一直坚持与起床困难综合症作斗争。通过研究相关文献,他找到了该病的发病原因:在深邃的太平洋海底中,出现了一条名为drd的巨龙,它......
  • P8611 [蓝桥杯 2014 省 AB] 蚂蚁感冒
    这道题采用贪心,两只蚂蚁相互传染后再同时掉头走,相当于穿过了对方,若无其事地走,并不会影响最后感冒的传播结果。#include<iostream>#include<algorithm>#include<cmath>#include<vector>#include<queue>usingnamespacestd;constintN=55;intn,x0,st;vector......
  • P7701 [CCC2014] 提前交卷 题解
    目录DescriptionSolutionCodeDescription在一个教室里有\(n\)排座位,每排有\(6\)个,从左至右标号分别为ABCDEF,其中C和D中有过道,通往教室前端和后端的两个房间,每个房间最开始没有人,每个座位上开始都有人。有\(m\)个不同的学生会依次提前交卷,先从这一排走到过道上,在从......
  • 【洛谷 P2141】[NOIP2014 普及组] 珠心算测验 题解(集合+多重循环)
    [NOIP2014普及组]珠心算测验题目描述珠心算是一种通过在脑中模拟算盘变化来完成快速运算的一种计算技术。珠心算训练,既能够开发智力,又能够为日常生活带来很多便利,因而在很多学校得到普及。某学校的珠心算老师采用一种快速考察珠心算加法能力的测验方法。他随机生成一个正整数集合......
  • luoguP3287 [SCOI2014] 方伯伯的玉米田
    题目描述方伯伯在自己的农田边散步,他突然发现田里的一排玉米非常的不美。这排玉米一共有NN株,它们的高度参差不齐。方伯伯认为单调不下降序列很美,所以他决定先把一些玉米拔高,再把破坏美感的玉米拔除掉,使得剩下的玉米的高度构成一个单调不下降序列。方伯伯可以选择一个区间,把这......
  • 「NOIP2014」解方程 题解
    思路首先我们可以观察到\(n\)和\(m\)与\(a_i\)相比小的很多,所以我们可以考虑直接暴力求解但是\(a_i\)太大了,所以如果需要直接计算的话需要全程使用高精度算法。因为高精度算法代码量有大速度又慢我们可依考虑将\(a_i\)转化为一个极大的指数取模的结果,因为只有是模数的......
  • P3565 [POI2014] HOT-Hotels
    题目描述:给定一棵树,在树上选\(3\)个点,要求两两距离相等,求方案数。数据范围:\(1\len\le5000\)\(1\lea,b\len\)思路:一开始我想的就是枚举两个点,然后处理第三个点。但是发现这样做非常的不正确,并且非常容易算重,所以我舍去了这种方式。但是在想这种做法的时候,我们会发现,......