本不想写,毕竟就打了一个小时(训练题变成个人赛了T_T),但是第一次水题4分钟搞定,手速一点没涨,纯粹就是脑子快^_^。
A. Levko and Table
题意:输入n和k,要求输出n行n列的矩阵满足每行每列的数和等于k。
代码如下:
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
#define INF 0x3f3f3f3f
int a[105][105];
int main()
{
int n,k;
cin>>n>>k;
memset(a,0,sizeof(a));
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
if(i==j)
{
a[i][j]=k;
}
}
}
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
if(j==n-1)
cout<<a[i][j];
else
cout<<a[i][j]<<" ";
}
cout<<endl;
}
}
B Levko and Permutation
题意:输入n和k,求是否存在一个数列,使得这个数列存在k个数是good数,good数是第i个数和i的最大公约数大于1。存在输出这个数列,不存在输出-1,数列的所有数最大是n还有每个数不同。
思路:首先n等于k时就不存在毕竟1和任何数的最大公约数都是1,然后直接将前面n-k-1个数直接i+1第n-k处理为1,其他的直接等于i就行了。
代码如下:
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
#define INF 0x3f3f3f3f
int a[100005];
int main()
{
int n,k;
cin>>n>>k;
if(n==k)
{
printf("-1\n");return 0;
}
if(n==1&&k==0)
{
cout<<1<<endl;return 0;
}
//memset(a,0,sizeof(a));
for(int i=1;i<=n;i++)
{
a[i]=i;
}
for(int i=1;i<n-k;i++)
{
a[i]=a[i+1];
}
a[n-k]=1;
for(int i=1;i<=n;i++)
{
if(i==n) cout<<a[i]<<endl;
else
cout<<a[i]<<" ";
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)