zoukankan      html  css  js  c++  java
  • Codeforces Round #324 (Div. 2)

    今天写写cf上以前的水题,找找自信

    A. Olesya and Rodion

    此题要求一个能被t整除的n位数,直接t为开始,后面全部为0. 当然,需要排除位数为1但t=10的情况。

     1 #include<cstdio>  
     2 #include<cstring>  
     3 #include<iostream>  
     4 #include<algorithm>  
     5 using namespace std;  
     6   
     7 int main()  
     8 {  
     9     int n,t,i;  
    10     scanf("%d%d",&n,&t);  
    11     if (n==1 && t==10)   
    12         printf("-1
    "); 
    13     else  
    14     {  
    15         if (t==10)   
    16             t=1;  
    17         printf("%d",t);  
    18         for (int i=0;i<n-1;i++)  
    19             printf("0");  
    20         printf("
    ");  
    21     }  
    22     return 0;  
    23 }

    B. Kolya and Tanya

    给你一个环,环上有3n个点,每个点的权值可以是1-3,然后问你满足a[i]+a[i+1]+a[i+2]!=6的方案有多少种,具体做法是先求出反例的情况,即a[i]+a[i+1]+a[i+2]=6的情况,这三个数的取值一共有7种,那么答案就是 3^(3n) - 7^n

     1 #include<algorithm>
     2 #include<iostream>
     3 #include<cstdlib>
     4 #include<cstring>
     5 #include<cstdio>
     6 #include<cmath>
     7 using namespace std;
     8 
     9 #define MOD 1000000007  
    10 
    11 int n;  
    12 
    13 LL pw(int a,int x)  
    14 {  
    15     LL k=1;  
    16     for (int i=1;i<=x;i++)  
    17         k=(k*a)%MOD;  
    18     return k%MOD;  
    19 }  
    20   
    21 int main()  
    22 {
    23   scanf("%d",&n);  
    24     printf("%I64d
    ",(pw(27,n)-pw(7,n)+MOD)%MOD);  
    25     return 0;  
    26 }

    C. Marina and Vasya

    要求与两个字符串的不同字符都为t的第三个字符串。 

     1 #include<algorithm>
     2 #include<iostream>
     3 #include<cstdlib>
     4 #include<cstring>
     5 #include<cstdio>
     6 #include<cmath>
     7 using namespace std;
     8 
     9 typedef long long LL;
    10 
    11 #define N 100010
    12 
    13 int n,t;
    14 int ans;
    15 char a[N],b[N],c[N];
    16 
    17 int main()  
    18 {
    19       scanf("%d%d",&n,&t);
    20     scanf("%s%s",a+1,b+1);
    21     t=n-t;
    22     for (int i=1;i<=n;i++)
    23         if (a[i]==b[i])
    24             ans++;
    25     if (ans+(n-ans)/2<t)
    26     {
    27         printf("-1
    ");    
    28         return 0;
    29     }
    30     int k=min(t,ans);
    31     for (int i=1,j=1;i<=n && j<=k;i++)
    32         if (a[i]==b[i])
    33             c[i]=a[i],j++;
    34     for (int i=1,j=1;i<=n && j<=t-k;i++)
    35         if (a[i]!=b[i] && !c[i])
    36             c[i]=a[i],j++;
    37     for (int i=1,j=1;i<=n && j<=t-k;i++)
    38         if (a[i]!=b[i] && !c[i])
    39             c[i]=b[i],j++;
    40     for (int i=1;i<=n;i++)
    41         if (!c[i])
    42             for (int j='a';j<='z';j++)
    43                 if (a[i]!=j && b[i]!=j)
    44                 {
    45                     c[i]=j;
    46                     break;
    47                 }
    48     printf("%s
    ",c+1);
    49     return 0;
    50 }

    D. Dima and Lisa

    把一个数插成1或2或3个素数

     1 #include<algorithm>
     2 #include<iostream>
     3 #include<cstdlib>
     4 #include<cstring>
     5 #include<cstdio>
     6 #include<cmath>
     7 using namespace std;
     8 
     9 typedef long long LL;
    10 
    11 #define N 100010
    12 
    13 int n;
    14 
    15 bool check(int x) 
    16 {
    17     for (int i=2;i<=sqrt(x);i++)
    18         if (x%i==0)
    19       return false;
    20     return true;
    21 }
    22 
    23 int main()  
    24 {
    25      scanf("%d",&n);
    26     if (check(n))
    27     {
    28         printf("1
    %d",n);
    29         return 0;
    30     }
    31     for (int i=n;i;i-=2)
    32         if (check(i))
    33         {
    34             int k=n-i;
    35             if (check(k))
    36             {
    37                 printf("2
    %d %d
    ",i,k);
    38                 return 0;
    39             }
    40             for (int j=k-2;j;j--)
    41                 if (check(j) && check(k-j))
    42                 {
    43                     printf("3
    %d %d %d
    ",i,j,k-j);
    44                     return 0;
    45                 }            
    46         }
    47     return 0;
    48 }

    E. Anton and Ira

    给两个数组,要求让第一个数组变成第二个数组,可以进行交换操作

    每次交换操作的代价是abs(i-j)

    然后让你把方案输出出来

     1 #include<algorithm>
     2 #include<iostream>
     3 #include<cstdlib>
     4 #include<cstring>
     5 #include<cstdio>
     6 #include<cmath>
     7 using namespace std;
     8 
     9 typedef long long LL;
    10 
    11 #define N 2010
    12 #define M 2000010
    13 
    14 int a[N],b[N],c[N];
    15 int l[M],r[M];
    16 
    17 int n;
    18 int ans,cnt;
    19 
    20 int main()
    21 {
    22         scanf("%d",&n);
    23     for (int i=1;i<=n;i++)
    24         scanf("%d",&a[i]);
    25     for (int i=1;i<=n;i++)
    26         scanf("%d",&b[i]),c[b[i]]=i;
    27     for (int i=1;i<=n;i++)
    28     {
    29         if (a[i]!=b[i])
    30         {
    31             int k=-1;
    32             for (int j=i+1;j<=n;j++)
    33                 if (a[j]==b[i])
    34                 {
    35                     k=j;
    36                     break;
    37                 }
    38             while (k!=i)
    39                 for (int j=i;j<k;j++)
    40                     if (c[a[j]]>=k)
    41                     {
    42                         ans+=abs(k-j);
    43                         swap(k,j);
    44                         swap(a[k],a[j]);
    45                         l[++cnt]=k;
    46                         r[cnt]=j;
    47                         break;
    48                     }
    49         }
    50     }
    51     printf("%d
    %d
    ",ans,cnt);
    52     for (int i=1;i<=cnt;i++)
    53         printf("%d %d
    ",l[i],r[i]);
    54     return 0;
    55 }
    56  
  • 相关阅读:
    MyBatis简介
    JDBC报错:Cannot find class: com.mysql.jdbc.Driver
    进程,线程,协程
    mamp提示 more elements...
    获取html页面的参数
    php基础函数
    返回接口
    生成订单号
    xml转数组
    判断是否是微信浏览器
  • 原文地址:https://www.cnblogs.com/yangjiyuan/p/5348412.html
Copyright © 2011-2022 走看看