洛谷入门3【循环结构】题单题解

本文介绍了编程中的一些基础概念和算法应用,包括寻找最小值、分类平均、数学问题如阶乘之和、高精度计算、计数问题、级数求和等。还涉及到了一些特定的算法挑战,如回文数、质数判断、数字处理和序列生成。通过实例展示了如何解决这些问题,是学习编程和算法的好资源。

目录

找最小值

分类平均 

一尺之棰

数字直角三角形

阶乘之和

高精度

计数问题

级数求和

金币

质数口袋

回文质数

I.判断回文数

II.判断质数

小玉在游泳

数字反转

月落乌啼算钱

 最长连号

质因数分解

求三角形

Davor

津津的储蓄计划


【入门3】循环结构 - 题单 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

找最小值

  • 注意找最小值,最小值应初始化为一个较大的数;
  • 找最大值,最大值应初始化为一个较小的数。
int n,a[100],min=1000; //初始化为较大的数。
	cin >> n;

	for (int i = 0; i < n; i++)
		cin >> a[i];
	for (int i = 0; i < n; i++)
	{
		if (a[i] < min)
			min = a[i];
	}
	cout << min;

分类平均 

int n, k,sum1=0,sum2=0;
	double ave1=0, ave2=0;
	cin >> n >> k;
	for (int i = 1; i <= n; i++)
	{
		if (i%k == 0)
		{
			ave1 += i;
			sum1++;
		}
		if (i%k != 0)
		{
			ave2 += i;
			sum2++;
		}
	}
	ave1 /= sum1;
	ave2 /= sum2;

	printf("%.1lf %.1lf", ave1, ave2);

一尺之棰

	int a,sum=1;
	cin >> a;
	while (1)
	{
		if (a == 1)
			break;
		a /= 2;
		sum++;
	}
	cout << sum;

数字直角三角形

  • 前导0 可以用%02d
#include<iostream>
#include<algorithm>
#include<math.h>

using namespace std;

int main() {
	int n, sum = 0, k;
	cin >> n;
	k = n;//设置k 不然下面的i<=(n的表达式)这里的n也跟着变化。
//注意这个中间量设置,以后还会有很多题涉及到这种原值变化,但是后来的运算还要用到原值,这时,一定要一开始用一个变量等于原值。
	for (int i = 1; i <= (n+1)*n/2; i++)
	{
		
		printf("%02d", i);
		sum++;
		if (sum == k)
		{
			sum = 0;//注意sum=0的位置
			cout << endl;
			k--;
		}
	}


	return 0;
}

阶乘之和

高精度

#include<iostream>
#include<iomanip>
#include<math.h>
#include<algorithm>
#include<string>
#include<cstring>
#include<stdio.h>
using namespace std;
int a[101] = { 0 }, b[101] = { 0 };

void mul(int x)//乘
{
	int y = 0;
	for (int i = 100; i >= 0; i--)
	{
		a[i] = a[i] * x + y;      //a[101]除了a[100]其他都是初始化为0,之后每次进位都必须只根据上一位即y进位。除了第一位要利用x。
		y = a[i] / 10;//y是进位
		a[i] = a[i] % 10;
	}
}

void add( )//加
{
	int y = 0;
	for (int i = 100; i >= 0; i--)
	{
		b[i] = b[i] +a[i] + y;
		y = b[i] / 10;     //y是进位
		b[i] = b[i] % 10;
	}

}

int main()
{
	int n,i,w;
	cin >> n;
	a[100] = b[100] = 1;
	for (i = 2; i <= n; i++)
	{
		mul(i);   //从小到大运行,每算出一个就加上  2!  下次运算从2!*3 即3!来算。
		add();
	}
	int m = 0;
	while (b[m] == 0) m++;//去掉末尾0
	
	for (int i = m; i <= 100; i++)
		cout << b[i];

	return 0;
}

计数问题

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值