入门赛最后一题求调
  • 板块灌水区
  • 楼主wpx001
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/10/18 21:29
  • 上次更新2024/10/18 21:42:45
查看原帖
入门赛最后一题求调
1284872
wpx001楼主2024/10/18 21:29
#include<bits/stdc++.h>
using namespace std;
long long n,ls[101],xvehao,sum;//n为课程数,ls储存临时数据,xvehao为小Y学号 
struct node{
	long long p;//人数 
	struct h{
		long long pm1,pm2,id,sc,w;//pm1是id编号第几,pm2是课堂参与度第几 
	}pi[101];
}ni[41];
bool cmp(int x,int y)
{
	return x > y;
}
int main()
{
 	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	cin >> n;
	for(int i = 1;i <= n;i++)
	{
		cin >> ni[i].p;//输入i门课人数 
		for(int j = 1;i <= ni[i].p;j++) cin >> ls[j],ni[i].pi[j].id = ls[j];//输入学号 
		sort(ls + 1,ls + 1 + ni[i].p);//排序学号 
		for(int j = 1;i <= ni[i].p;j++)
		{
			for(int k = 1;k <= ni[i].p;k++)
			{
				if(ls[j]==ni[i].pi[k].id) ni[i].pi[k].pm1 = j;//pm1储存第几小的学号 
			}
		}
		for(int j = 1;i <= ni[i].p;j++) cin >> ls[j];//输入课程参与度 
		for(int j = 1;i <= ni[i].p;j++) ni[i].pi[j].sc = ls[ni[i].pi[j].pm1];//课程参与度对号入座 
		sort(ls + 1,ls + 1 + ni[i].p,cmp);//排序课程参与度 
		for(int j = 1;i <= ni[i].p;j++)
		{
			for(int k = 1;k <= ni[i].p;k++)
			{
				if(ls[j]==ni[i].pi[k].sc) ni[i].pi[k].pm2 = j;//pm2储存第几大的课程参与度 
			}
		}	
		for(int j = 1;i <= ni[i].p;j++) cin >> ls[j];//输入分数
		for(int j = 1;i <= ni[i].p;j++) ni[i].pi[j].w = ls[ni[i].pi[j].pm2];//分数对号入座 
	} 
	cin >> xvehao;
	for(int i = 1;i <= n;i++)
	{
		for(int j = 1;i <= ni[i].p;j++) 
		{
			if(ni[i].pi[j].id == xvehao) 
			{
				sum += ni[i].pi[j].w;
				break;
			}
		}
	}
	if(sum % n == 0) cout << sum / n;
	else cout << sum / n << '+' << (sum - sum / n * n) % n / __gcd(sum,n) << '/' << n / __gcd(sum,n);
    return 0;
}


2024/10/18 21:29
加载中...