Codeforces Round #210 (Div. 2)

来源:互联网 发布:ahc正品验证软件 编辑:程序博客网 时间:2024/06/05 11:01

本不想写,毕竟就打了一个小时(训练题变成个人赛了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 0x3f3f3f3fint 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 0x3f3f3f3fint 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]<<" ";  }}



0 0
原创粉丝点击