首页 > 其他分享 >二级 数组统计法

二级 数组统计法

时间:2024-12-01 21:32:15浏览次数:6  
标签:同学 二级 统计法 10 int 个数 数组 100 include

目录
缺失的数子 夏令营小旗手
选班委 求N个整数的平均数、众数和中位数
数字出现次数 找筷子
声音识别 去除重复数字
求n个数中每个数出现的次数 数字出现次数
COUNT 求n个数中出现次数最多的数

COUNT
题目描述
一本书的页数为 N ,页码从 1 开始编起,请你求出全部页码中,用了多少
个0,1,2…9 。
输入
一个正整数 N (N≤10000 ),表示总的页码。
输出
共十行:第 k 行为数字 k−1 的个数。
 

#include <stdio.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
void  statNum(long long sn[10], long long n) {
	long long i, c, k, s, pown;
	for (int i = 0; i < 10; i++)
		sn[i] = 0;
	for (k = s = 0, pown = 1; n > 0; k++, n /= 10, pown *= 10) {
		c = n % 10;
		for (i = 0; i < 10; i++)
			sn[i] += c * k * pown / 10;
		for (i = 0; i < c; i++)
			sn[i] += pown;
		sn[c] += 1 + s;
		sn[0] -= pown;
		s += c * pown;
	}
}
int  main(int argc, char *argv[]) {
	long long sn[10], i, n;
	while (cin >> n) {
		if (argc > 1)
			n = atoi(argv[1]);

		statNum(sn, n);
		for (i = 0; i < 10; i++)
			cout << sn[i] << endl;

	}

	return 0;
}

求n个数中每个数出现的次数
题目描述
从键盘读入 n 个整数(n≤100),这 n 个数都是 1 ~ 10 之间的数,请从小到大输出每个出现过的数,以 及统计出每
个数出现的次数? 比如:假设读入 5 个数,分别为 1 2 3 3 5 ,统计结果如下:1 出现 1 次,2 出现 1 次,3 出现 2 次,
5 出现 1 次。 输出格式如下:
输入
第 1 行输入一个整数 n 。
第 2 行输入 n 个整数,用空格隔开。
输出
输出若干行,每行 2 个数,用空格隔开,按照从小到大的顺序,输出每个数以
及每个数出现的次数。
 

#include<iostream>
using namespace std;
int main()
{
	int a[100]={0};
	int n;
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		int s;
		cin>>s;
		a[s]++;
	}
	for(int i=1;i<=n;i++)
	{
		if(a[i]!=0)
		{
			cout<<i<<" "<<a[i]<<endl;
		}
	}
	
	
	return 0;
}

声音识别
题目描述
学校王老师研发了一套新的声音识别系统,该系统预先将每位同学的学号和声音录入之后,只要同学一 说话,就知道是哪个学号的
同学在说话(不同的同学声音是完全不一样的)王老师将系统装在了教室,系统收集到了一节英语课中同学们说话的 n 个片段,并
转换为了同学们的学 号,请你编程帮助王老师计算出,有多少个同学在英语课中发过言,并按照学号由小到大,输出每位同 学的学
号及该学号的同学发言的次数。 比如,假设经过系统分析,得到如下的 88 个同学的学号分别是:8 1 6 1 8 6 7 2,表示同学们的发
言顺 序分别是:8 号、1 号、6 号、1 号、8 号、6 号、7 号、2 号,那么一共有 5位同学发过言,按照学号由 小到大输出发言次数如
下:
分别代表 1号同学发言 2次、2 号同学发言 1 次、6 号同学发言 2次、7 号同学发言 1 次、
8 号同学发言2 次。
输入
输入有 2 行,第 1 行有一个整数 n(3≤n≤10000);
第二行有 n 个数字(这些整数都是 1~100 之间的整数,含 1 和 100),数字之间用空格
隔开,代表同学们的学号。
输出
第 11 行输出 11 个整数,代表总共有多少名同学发过;
接下来输出若干行,每行 2 个整数,用空格隔开,表示按照学号由小到大输出发言同学
的学号及每位同学发言的次数。
 

#include<iostream>
using namespace std;
int main()
{
	int a[100]={0};
	int n;
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		int s;
		cin>>s;
		a[s]++;
	}
	for(int i=1;i<=n;i++)
	{
		if(a[i]!=0)
		{
			cout<<i<<" "<<a[i]<<endl;
		}
	}
	
	
	return 0;
}

数字出现次数
题目描述
有 50 个数( 0∼19),求这 50个数中相同数字出现的最多次数为几次?
输入
50 个数字。
输出
1 个数字(即相同数字出现的最多次数)。
 

#include<iostream>
using namespace std;

int main()
{
	int i,a[20]={0},b[50];
	for(i=0;i<50;i++){
		cin>>b[i];
		a[b[i]]++;}
	int max=0;
	for(i=0;i<20;i++){if(a[i]>max)
		max=a[i];
	}
	cout<<max;
}

选班委
题目描述
小 T 和他的小伙伴们到 CZ 中学的创新实验班报到后的第一件事就是选班委,班主任 R 
老师走上讲台宣布了选举办法,首先让全班 40 位同学依次上讲台做自我介绍,然后按照
职位一个一个依次进行选举,先选班长,再选学习委员……,选举办法是每人投一票,谁
的票数最高就选谁担任这个职位,最后围棋高手小 W 颇具大将风范被选为班长,学神小
Z 当选为学习委员那是众望所归,小 S 则有天生一副好嗓子,不但歌唱得好,并且能将
多种 动物的叫声模仿得惟妙惟肖,因此当选为文体委员。小 T 同学在本次选举中负责计
票,他 觉得手工计票太慢了,且容易出错,因此想请你编一个程序实现机器计票功能。
这个程序 要能实现以下功能:全班共有 n 个同学,依次用 1 到 n 编号,共有 m 个人
(包括班主任和 任课老师等)参与了投票,每张选票上写有一个同学的编号,得票最多
的同学当选。
输入
输入数据第一行包含两个用空格隔开的正整数 n 和 m,其中 n≤200,m≤2000。
第二行有 m 个用空格隔开的不超过 n 的正整数,表示这 m 张选票上所写的编号。
输出
输出得票最多的那个同学的编号。如果同时有两名以上同学得票最多,输出编号最小的
那个同学的编号。
 

#include<bits/stdc++.h>
using namespace std;
int n,m,t,maxn=INT_MIN,b;
int main(){
	cin>>n>>m;
	int a[m+5]={0};
	for(int i=1;i<=m;++i)
	{
		cin>>t;
		a[t]++;
	}
	for(int i=1;i<=n;++i)
	{
		if(a[i]>maxn)
		{
			maxn=a[i]; 
			b=i;
		}
	}
	cout<<b<<endl;
	return 0;
}

夏令营小旗手
题目描述
夏令营在实验小学进行,组委会决定在实验小学的学生中推选一名小旗手,推选方法
如下:实验小学有 n 名学生(1≤n≤1000)。每名学生有一个学号,学号为1,2,…n。
同时,每名同学有一张选票,可以推选一名同学为小旗手。最后,得票最多者当选,
若得票最多者相同票数,则学号小者当选。
例如,选票为2 3 4 4 3 4 1 6,4号学生得票最多(3票)当选小棋手。
输入
第 1 行读入 n,x1 两个整数,n为学生数,x1 为第一个选票上的学号,之后的选票 x 
i(i≥2)由下面的递推
关系给出:
x i =(x i−1 ×37+33031) mod n+1
其中 mod 为取余运算,例如,13 mod 8=5,21 mod 21=0。根据这个公式,就能从
x1推出
x2,x3,...xn。
 

#include<bits/stdc++.h>
using namespace std;
int n,m,t,maxn=INT_MIN,b;
int main(){
	cin>>n>>m;
	int a[m+5]={0};
	for(int i=1;i<=m;++i)
	{
		cin>>t;
		a[t]++;
	}
	for(int i=1;i<=n;++i)
	{
		if(a[i]>maxn)
		{
			maxn=a[i]; 
			b=i;
		}
	}
	cout<<b<<endl;
	return 0;
}

求N个整数的平均数、众数和中位数
题目描述
求 N 个整数的平均数,众数和中位数。
小知识:
1. 众数
如有 9 个数:17,13,17,9,17,17,3,16,17,其中 17 出现的次数最多,即为这组数的众数。
(本题确保测试数据中,出现次数最多的数只有一个)
2. 中位数
如有 9 个数:102,170,96,90,97,106,110,182,100。
将这 9个数按一定的顺序(从大到小或从小到大)排列后得到:
182,170,110,106,102,100,97,96,90。正中间的一个数是 102 , 102 是这组数的中位数。
而这 10 个数:106,99,104,120,107,112,33,102,97,100。
按一定顺序排列后得到:120,112,107,106,104,102,100,99,97,33。
正中间有两个数:104,102 ,中位数就是这两个数的平均数,即(104+102)/2=103.0 。
输入
第一行为整数 N (5≤N≤10000 );
第二行为空格隔开的 N 个数 Ai ( 0≤Ai≤100)。
输出
输出空格隔开的平均数 众数 中位数(平均数保留两位小数,中位数保留一位小数)。
 

#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
	int b[100],lb=0,n;
	float a[100],c[100],sum=0;
	cin>>n;
	for(int i=0;i<n;i++){
		cin>>a[i];
		sum=sum+a[i];
	}
	for(int i=0;i<n;i++){
		bool f=true;
		for(int j=0;j<lb;j++){
			if(a[i]==b[j]){
				f=false;
				c[j]++;
				break;
			}
		}
		if(f==true){
			b[lb]=a[i];
			c[lb]=1;
			lb++;
		}
	}
	for(int i=0;i<lb;i++){
		for(int j=0;j<lb-1-i;j++){
			if(c[j]<c[j+1]){
				swap(c[j],c[j+1]);
				swap(b[j],b[j+1]);
			}
		}
	}
	float p=sum/n;
	cout<<fixed<<setprecision(2)<<p<<" ";
	cout<<b[0]<<" ";
	if(n%2==0){
		int x=n/2;
		int y=(n+2)/2;
		float z=(a[x]+a[y])/2;
		cout<<fixed<<setprecision(1)<<z;
	}
	else if(n%2==1){
		float s=(n+1)/2;
		cout<<fixed<<setprecision(1)<<s;
	}
}

找筷子
题目描述
经过一段时间的紧张筹备,电脑小组的“RP餐厅”终于开业了,这天,经理 LXC 接到了一个定餐大单,可把大家乐坏了!
员工们齐心协力按要求准备好了套餐正准备派送时,突然碰到一个棘手的问题,筷子!CX 小朋友找出了餐厅中所有的筷
子,但遗憾的是这些筷子长短不一,而我们都知道筷子需要长度一样的才能组成一双,更麻烦的是 CX 找出来的这些筷子
数量为奇数,但是巧合的是,这些筷子中只有一只筷子是落单的,其余都成双,善良的你,可以帮 CX 找出这只落单的筷
子的长度吗?
输入
第一行读入一个数 N,它代表 C X找到的筷子的根数。(10≤N≤10000) 第二行是 N 个用空格隔开的
数,代表筷子的长度。(筷子长度都是 1∼1000 之间的整数)
输出
一行,落单的筷子的长度。
 

#include<iostream>
using namespace std;
int main()
{
	int a[100]={0};
	int n;
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		int s;
		cin>>s;
		a[s]++;
	}
	for(int i=1;i<=n;i++)
	{
		if(a[i]%2!=0)
		{
			cout<<i;
		}
	}
	
	
	return 0;
}

去除重复数字
题目描述
给你 N 个数(N≤100),每个数都在(0∼1000)之间,
其中由很多重复的数字,请将重复的数字只保留一个,
并将剩下的数由小到大排序并输出。
输入
输入有 2 行;
第 1 行为 1个正整数,表示数的个数:N;
第 2 行有 N 个用空格隔开的整数。
输出
第 1 行为 1 个正整数 M,表示不相同数的个数。
接下来的 M 行,每行一个整数,表示从小到大排好序
的不相同的数。
 

#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;

bool cmp(int a,int b)
{
	if(a%10!=b%10)
		return a%10<b%10;
	else
		return a<b;
}

int main()
{
	int T,i,j,m,k=-1;
	int list[1001],s[100];
	
	for(i=0;i<1001;i++)
		list[i]=0;
	
	scanf("%d",&T);
	while(T--)
	{
		k++;
		int n;
		scanf("%d",&n);
		for(i=0;i<n;i++)
		{
			scanf("%d",&m);
			if(list[m]!=1)
				list[m]=1;
		}
		for(i=0,j=0;i<1001;i++)
		{
			if(list[i]==1)
				s[j++]=i;
		}
		sort(s,s+j,cmp);
		
		printf("case #%d:\n",k);
		for(i=0;i<j;i++)
		{
			if(i!=j-1)
				printf("%d ",s[i]);
			else
				printf("%d\n",s[i]);
		}
	}
	return 0;
}

没了 

标签:同学,二级,统计法,10,int,个数,数组,100,include
From: https://blog.csdn.net/h112316/article/details/144171558

相关文章

  • 2024-12-01:单面值组合的第 K 小金额。用go语言,给定一个整数数组 coins,表示不同面值的
    2024-12-01:单面值组合的第K小金额。用go语言,给定一个整数数组coins,表示不同面值的硬币,同时给出一个整数k。你可以使用任意数量的这些硬币,但不能将不同面值的硬币组合在一起。请返回可以用这些硬币构成的第k个最小金额。1<=coins.length<=15。1<=coins[i]<=2......
  • 108. 将有序数组转换为二叉搜索树
    问题描述给你一个整数数组nums,其中元素已经按升序排列,请你将其转换为一棵平衡二叉搜索树。分析二叉查找树BinarySearchTree,又叫:二叉搜索树,二叉排序树,其中序遍历是升序的,因此本题等同于根据中序遍历的序列恢复二叉搜索树与二分有区别,二分是不断查找答案所在区域的中间值......
  • Java基础知识-第4章-认识Java中的数组
    【导航】1、数组概述Java中的数组可以认为是一种容器,其可以同时存放多个数据值(元素)。Java语言中提供的数组是用来存储固定大小的同类型元素。数组的特点:数组是一种引用数据类型,但是数组元素类型不限。数组当中的多个数据类型必须统一数组的长度一旦确定,在程序运行......
  • 学霸带你游戏化 Bash 数组提升编程效率
    数组在Bash脚本中的重要性在现代编程中,数组的灵活性和高效性使其成为处理数据的核心工具之一。尤其是在Bash脚本中,数组能够帮助开发者以简洁的方式管理和操作多个数据项。在游戏开发、系统管理等领域,数组的应用无处不在。从定义和初始化,到元素访问和操作,每一个环节都至关......
  • 树状数组
    树状数组作用:动态地维护前缀和查询Timecomplexity修改一个数:$$o(lgn)$$查询一段区间和:$$o(lgn)$$实现过程1lowbit返回一个数的二进制下末尾第一个1和后面的0构成的数如11011000100返回100=4intlowbit(intx){ returnx&(-x);}2建立树状数组定义$$t[x]$$保存......
  • JavaScript 的新数组分组方法
    对数组中的项目进行分组,你可能已经做过很多次了。每次都会手动编写一个分组函数,或者使用 lodash 的 groupBy 函数。好消息是,JavaScript现在有了分组方法,所以你再也不必这样做了。Object.groupBy 和 Map.groupBy 这两个新方法将使分组变得更简单,并节省我们的时间或依赖性......
  • 【C语言】二维数组的声明
    一、1.在被调用函数的形参数组声明可以省略第一维的大小,第二维不可省略2.实参数组第一维第二维都需要#include<stdio.h>intmain(){ inta[][]; //Error intb[1][]; //Error intc[][1]; //Error intd[1][1]; return0;}voidf(inta[][]) //Error{ }v......
  • 编一个程序,从键盘上输入一串符号(以回车键为结束),将其以字符串形式存入一维字符数组,然后
    大学作业,运行不了就把每个for循环里面的int提出来,括号内保留i就行了!!!!!多的我不说了,代码放地下自取自拿,某人在这里求个赞,陆续会更新实验3-5,所有作业都有复制(自取)版和详解版,记得关注,谢谢各位:tips:gets在C11版本被删去,目前仅仅是用于大学计算机,正式版我也放在末尾并说明区别自取版:......
  • 毕业论文/设计、项目报告:Word/WPS中的一级标题、二级标题等如何设置
         本篇文章将简短介绍一下如何解决很多新手朋友在写论文/设计、项目报告时,常常需要设置各级标题的方法。        本文所用软件为office版本下的word,wps版本下的word应该也适用。        这里我们以设置如下图所示的一级、二级和三级标题为例来展......
  • leetcode 2289. 使数组按非递减顺序排列 未解决
    leetcode2289.使数组按非递减顺序排列这道题远没有想象中的简单,如果用暴力常规方法,数据量大的情况下会超时暴力解1:classSolution{public:inttotalSteps(vector<int>&nums){intsize=nums.size();intres=0;intformer=0,now=......