第四周周报

洛谷题单

循环结构

P1217 [USACO1.5] 回文质数 Prime Palindromes - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

1,所有四+偶数位的回文数都可被11整除

2,先找回文数再判断质数

#include<stdio.h>
#include<math.h>
int check1(int x)//检查位数,没有四及以上偶数位的回文质数
{
	if ((x >= 1000 && x <= 9999) || (x >= 100000 && x <= 999999) || x > 9999999)
	{
		return 0;
	}
	else { return 1; }
}
int check2(int x)//判断回文
{
	int a[20],flag=1;
	while (x>0)
	{
		a[flag] = x % 10;
		x /= 10;
		flag++;
	}
	for (int i = 1; i <= flag / 2; i++)
	{
		if (a[i] != a[flag - i]) return 0;//不符合回文 
	}
	return 1;
}
int check3(int x)//判断质数
{
	for (int i = 2; i <= sqrt(x); i++)
	{
		if (x % i == 0) { return 0; }
	}
	return 1;
}
int main()
{
	int c=0,d=0;
	scanf("%d%d",&c, &d);
	if (c % 2 == 0)c++;
	d = d < 9999999 ? d : 9999999;
	for (int i = c; i <= d; i += 2)
	{
		if (check1(i) == 0)continue;
		if (check2(i) == 0)continue;
		if (check3(i) == 0)continue;
		printf("%d\n", i);
	}
	return 0;
}

P1423 小玉在游泳 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

由数列求和公式可解

#include<stdio.h>
#include<math.h>
int main()
{
	double s=0,n=0;
	scanf("%lf",&s);
	n = log(1.0 - s * 0.01) / log(0.98);
	int h = (int)n;
	if (n != h)h++;
	printf("%d", h);
	return 0;
}

P1307 [NOIP2011 普及组] 数字反转 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

sum=sum*10+k;把原sum整个前移一位

#include<stdio.h>
#include<math.h>
int main()
{
	int n;
	scanf("%d", &n);
	if (n < 0) { printf("-"); n = -n; }
	int sum = 0;
	while (n != 0)
	{
		int k = n % 10;
		sum = sum * 10 + k;
		n /= 10;
	}
	printf("%d", sum);
	return 0;
}

P1720 月落乌啼算钱(斐波那契数列) - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

1,原式是斐波那契数列的变式

2,三个变量表示n-2,n-1,n,互相前推

3,2^48用int会炸

#include<stdio.h>
int main()
{
	int n; double a = 1, b = 1, c = 0;
	scanf("%d", &n);
	for (int i = 3; i <= n; i++)
	{
		c = a + b;
		a = b;
		b = c;
	}
	printf("%.2lf", c);
	return 0;
}

P5724 【深基4.习5】求极差 / 最大跨度值 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

不开数组,只需要两个变量存放最大最小值

#include<stdio.h>
int main()
{
	int n, temp, min = 999999999, max =-1 ;
	scanf("%d", &n);
	for (int i = 0; i <n; i++)
	{
		scanf("%d", &temp);
		max = max > temp ? max : temp;
		min = min < temp ? min : temp;
	}
	printf("%d", max-min);
	return 0;
}

P1420 最长连号 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

#include<stdio.h>
int main()
{
	int n, new=0,ans=0,temp=-2, max = 0;
	scanf("%d", &n);
	for (int i = 0; i <n; i++)
	{
		scanf("%d", &new);
		if (new == temp + 1) { ans++; }
		else { ans = 1; }
		temp = new;
		max = max > ans ? max : ans;
	}
	printf("%d", max);
	return 0;
}

P1075 [NOIP2012 普及组] 质因数分解 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

有唯一分解定理:一个数能且只能分解为一组质数的乘积。所以题目中两个质数的积必然只有这两个因数

#include<stdio.h>
int main()
{
	int n,i;
	scanf("%d", &n);
	for (i = 2; i <n; i++)
	{
		if (n % i == 0)break;
	}
	printf("%d", n/i);
	return 0;
}

P5725 【深基4.习8】求三角形 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

%02d输出,自动补零

#include<stdio.h>
int main()
{
	int n;
	scanf("%d", &n);
	//输出正方形
	for (int i = 1; i <=n*n; i++)
	{
		printf("%02d", i);
		if (i % n == 0) { printf("\n"); }
	}
	printf("\n");
	//输出三角形
	int num = 1;
	for (int i = 1; i <= n; i++)
	{
		for (int j = 0; j < n - i; j++) { printf("  "); }
		for (int k = 1; k <= i; k++)
		{
			printf("%02d", num);
			num++;
		}
		printf("\n");
	}
	return 0;
}

P5726 【深基4.习9】打分 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

注意分数的精度是double

#include<stdio.h>
int main()
{
	float n, c, tol = 0, max = -1, min = 100; 
	double anu = 0;
	scanf("%f\n", &n);
	for (int i = 0; i <n; i++)
	{
		scanf("%f", &c);
		tol += c;
		max = max > c ? max : c;
		min = min < c ? min : c;
	}
	anu = ((double)(tol - min - max)) / (n - 2.0);
	printf("%.2lf",anu);
	return 0;
}

P4956 [COCI2017-2018#6] Davor - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

数学解法,分情况解不定方程

#include<stdio.h>
int main()
{
	int n;
	scanf("%d\n", &n);
	n /= 364;
	if(n<=103){printf("%d\n%d\n",n-3,1);}
	else
	{
		if (n % 3 == 0) { printf("%d\n%d\n", 99, (n - 99)/3); }
		if (n % 3 == 1) { printf("%d\n%d\n", 100, (n - 100) / 3); }
		if (n % 3 == 2) { printf("%d\n%d\n", 98, (n - 98) / 3); }
	}
	return 0;
}

P1089 [NOIP2004 提高组] 津津的储蓄计划 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

#include<stdio.h>
int main()
{
	int n,pos=0,flag=0,put=0;
	for (int i = 1; i <= 12; i++)
	{
		pos += 300;
		scanf("%d", &n);
		pos -= n;
		if (pos < 0) { flag = -i; break; }
		if (pos >= 100)
		{
			put += pos / 100;
			pos %= 100;
		}
	}
	if (pos < 0) { printf("%d", flag);}
	else
	{
		printf("%d", put * 120 + pos);
	}
	return 0;
}

数组

P1428 小鱼比可爱 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

#include<stdio.h>
int main()
{
	int n, a[1000] = {0};
	scanf("%d", &n);
	for (int i = 0; i < n; i++)
	{
		scanf("%d", &a[i]);
		int flag = 0;
		for (int j = 0; j < i; j++)
		{
			if (a[j] < a[i]) { flag++; }
		}
		printf("%d ", flag);
	}
	return 0;
}

P1427 小鱼的数字游戏 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

#include<stdio.h>
int main()
{
	int a[1000] = {0};
	int flag = 0;
	for (int i = 0;; i++)
	{
		scanf("%d", &a[i]);
		if (a[i] == 0)
		{
			flag = i; break;
		}
	}
	for (int j = flag-1; j >=0; j--)
	{
		printf("%d ", a[j]);
	}
	return 0;
}

P5727 【深基5.例3】冰雹猜想 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

#include<stdio.h>
int main()
{
	int n;
	scanf("%d", &n);
	int a[1000] = {0};
	int flag = 0;
	for (int i = 0;; i++)
	{
		a[i] = n;
		if (n == 1) { flag = i; break; }
		if (n % 2 == 1) { n = 3 * n + 1; }
		else { n /= 2; }
	}
	for (int j = flag; j >=0; j--)
	{
		printf("%d ", a[j]);
	}
	return 0;
}

P1047 [NOIP2005 普及组] 校门外的树 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

#include<stdio.h>
int main()
{
	int l,m,u,v;
	int a[100000] = { 0 };
	int tol = 0;
	scanf("%d %d", &l,&m);
	for (int i = 1;i<=m; i++)
	{
		scanf("%d %d", &u, &v);
		for (int i = u;i<=v; i++)
		{
			a[i] = 1;
		}
	}
	for (int i = 0; i <=l; i++)
	{
		if (a[i] == 0) { tol++; }
	}
	printf("%d", tol);
	return 0;
}

P5728 【深基5.例5】旗鼓相当的对手 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

#include<stdio.h>
#include<stdlib.h>
int main()
{
	int n;
	scanf("%d", &n);
	int a[1010][4] = { {0,0} };
	int tol = 0;
	for (int i = 0;i<n; i++)
	{
		scanf("%d %d %d", &a[i][0], &a[i][1],&a[i][2]);
		a[i][3] = a[i][0] + a[i][1] + a[i][2];
		for (int j = 0;j<i; j++)
		{
			if ((abs(a[i][0] - a[j][0]) <= 5) && (abs(a[i][1] - a[j][1]) <= 5) && (abs(a[i][2] - a[j][2]) <= 5) && (abs(a[i][3] - a[j][3]) <= 10)) { tol++; }
		}
	}
	printf("%d", tol);
	return 0;
}

P5732 【深基5.习7】杨辉三角 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

#include<stdio.h>
int main()
{
	int n;
	scanf("%d", &n);
	int a[100][100] = { {0} };
	for (int i = 0;i<n; i++)
	{
		a[i][0] = 1; 
		a[i][i] = 1;
	}
	for (int i = 2; i < n; i++)
	{
		for (int j = 1; j < i; j++)
		{
			a[i][j] = a[i - 1][j - 1] + a[i - 1][j];
		}
	}
	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j <= i; j++)
		{
			printf("%d ", a[i][j]);
		}
		printf("\n");
	}
	return 0;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值