ccf认证练习

202406-1 矩阵重塑(其一)

#include<bits/stdc++.h> 

using namespace std;

int main( )
{
    int n,m,p,q;
	cin>>n>>m>>p>>q;
	int k=n*m;
	int a[n][m],b[k],c[p][q];

	for(int i=0;i<n;i++)
	{
		for(int j=0;j<m;j++)
		{
			cin>>a[i][j];
			b[i*m+j]=a[i][j];
		}
	 } 
	for(int i=0;i<p;i++)
	{
		for(int j=0;j<q;j++)
		{
			c[i][j]=b[i*q+j];
		}
	 } 
	 for(int i=0;i<p;i++)
	{
		for(int j=0;j<q;j++)
		{
			cout<<c[i][j]<<" ";
		}
		cout<<endl;
	 } 
    return 0;
}

202406-2 矩阵重塑(其二)

#include<bits/stdc++.h> 

using namespace std;
const int N=1e4+4;
int a[N][N],b[N],c[N][N];
int n,m;
void cs(int p,int q)
{
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<m;j++)
		{
			b[i*m+j]=a[i][j];
		}
	 } 
	for(int i=0;i<p;i++)
	{
		for(int j=0;j<q;j++)
		{
			a[i][j]=b[i*q+j];
		}
	 } 
	 n=p;m=q;
}
void zz()
{
	for(int i=0;i<m;i++)
	{
		for(int j=0;j<n;j++)
		{
			c[i][j]=a[j][i];
		}
	}
	for(int i=0;i<m;i++)
	{
		for(int j=0;j<n;j++)
		{
			a[i][j]=c[i][j];
		}
	}
	int tem=n;
	m=n;
	n=tem;
}
int main( )
{
    
    int t;
	cin>>n>>m>>t;

	for(int i=0;i<n;i++)
	{
		for(int j=0;j<m;j++)
		{
			cin>>a[i][j];
			b[i*m+j]=a[i][j];
		}
	 } 
	 int op,aa,bb;
	while(t--)
	{
		cin>>op>>aa>>bb;
		if(op==1) cs(aa,bb);
		else if(op==2) zz();
		else
		{
			cout<<a[aa][bb]<<endl;
		}
	}
	 
    return 0;
}

词频统计

#include<bits/stdc++.h> 

using namespace std;
const int N=100; 
int z[N],y[N];
int main( )
{
	int n,m;
	cin>>n>>m;
	while(n--)
	{
		int l;
		cin>>l;
		bool f[N]={0};
		for(int i=1;i<=l;i++)
		{
			int x;
			cin>>x;
			y[x]++;
			if(y[x]&&!f[x])
			{
				z[x]++;
				f[x]=1;
			}
		}
	}
	for(int i=1;i<=m;i++)
	{
		cout<<z[i]<<" "<<y[i]<<endl;
	}
    return 0;
}

相似度计算

#include<bits/stdc++.h> 

using namespace std;
const int N=100; 
set<string> se1;
set<string> se2;
set<string> ss;
int main( )
{
	int n,m;
	cin>>n>>m;
	for(int i=0;i<n;i++)
	{
		string s;
		cin>>s;
		string s1="";
		for(int j=0;j<s.size();j++)
		{
			s[j]=tolower(s[j]);
			s1=s1+s[j];
		}
		se1.insert(s1);
		ss.insert(s1);
	}
	for(int i=0;i<m;i++)
	{
		string s;
		cin>>s;
		string s1="";
		for(int j=0;j<s.size();j++)
		{
			s[j]=tolower(s[j]);
			s1=s1+s[j];
		}
		se2.insert(s1);
		ss.insert(s1);
	}
	//同时出现: 
	int num=0;
	for(auto it:se1)
	{
		num+=se2.count(it);
	}

	cout<<num<<endl<<ss.size();
    return 0;
}

仓库规划

#include<bits/stdc++.h> 

using namespace std;
int a[1000][10],b[1000];
int main( )
{
	int n,m;
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			cin>>a[i][j];
		}
	} 
	for(int i=1;i<=n;i++)
	{
		int sum=0;
		int minn=INT_MAX;
		for(int j=1;j<=n;j++)
		{
			int f=1;
			for(int k=1;k<=m;k++)
			{
				if(a[j][k]>a[i][k])
				{
					sum+=a[j][k]-a[i][k];
					if(f==m)
					{
						if(minn>sum)
						{
							b[i]=j;
						}
						minn=min(minn,sum);
					}
					f++;
				}
			}
		}
	} 
	for(int i=1;i<=n;i++)
	{
		cout<<b[i]<<endl;
	}
    return 0;
}

因子化简

#include<bits/stdc++.h> 

using namespace std;
int main( )
{
	int q;
	cin>>q;
	while(q--)
	{
		long long n,k;
		cin>>n>>k;
		long long res=1;
		for(int i=2;i<=n/i;i++)
	{

			int s=0;
			while(n%i==0) n/=i,s++;
			if(s>=k) res=res*pow(i,s); 
	}
	cout<<res<<endl;
	}
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值