• codeforces798C


    原题链接:http://codeforces.com/contest/798/problem/C

    题意:有一个数列A,gcd(a1,a2,a3...,an)>1 时称这个数列是“漂亮”的。存在这样的操作,使ai,ai+1变为(ai-ai+1), (ai+ai+1)。问最少进行这样的操作使数列是“漂亮”的。

    思路:考虑gcd(a1,a2,a3...,an)>1 的情况:

    我们对ai,ai+1进行两次操作可以得到2ai,2ai+1,也就是说一对相邻的数字最多操作2次使它们的gcd=2>1。而对于一对奇数来说,操作一次就能使它们成为偶数。

    现在就是要把数列中所有的数变为偶数。先对相邻奇数进行操作(每次+1),再对单个奇数进行操作(每次+2)即可。

    AC代码:

     1 #include<iostream>
     2 #include<cstring>
     3 #include<cstdio>
     4 using namespace std;
     5 const int MAXN=2e6+5;
     6 long long num[MAXN];
     7 long long gcd(long long a, long long b){
     8     return (b==0)?a:gcd(b, a%b);
     9 }
    10 int main()
    11 {
    12     int n;
    13     while(cin>>n){
    14         memset(num, 0, sizeof(num));
    15         for(int i=0;i<n;i++){
    16             cin>>num[i];
    17         }
    18         long long g=gcd(num[0], num[1]); 
    19         for(int i=2;i<n;i++){
    20             g=gcd(g, num[i]);
    21             if(g==1)
    22                 break;
    23         }
    24         if(g>1){
    25             cout<<"YES"<<endl;
    26             cout<<0<<endl;
    27             continue;
    28         }
    29         int res=0;
    30         for(int i=1;i<n;i++){
    31             if(num[i-1]%2&&num[i]%2){
    32                 num[i-1]++;
    33                 num[i]++;
    34                 res++;
    35             }
    36         }
    37         for(int i=1;i<n;i++){
    38             if(num[i-1]%2&&num[i]%2==0||(num[i]%2&&num[i-1]%2==0))    {
    39                 num[i-1]=0;
    40                 num[i]=0;
    41                 res+=2;
    42             }
    43         }
    44         cout<<"YES"<<endl;
    45         cout<<res<<endl;
    46     }
    47     
    48     return 0;
    49 }
  • 相关阅读:
    ip代理投票
    linq小笔记;
    c#类的执行顺序
    IEnumerable、GetEnumerator、IEnumerator的理解
    English随笔1
    AudioServicesPlaySystemSound音频服务—IOS开发
    iOS开发之压缩与解压文件
    xcode添加Cocos2d
    使用CoreTelephony获得SIM卡网络运营商名称
    iOS设备进行定位?
  • 原文地址:https://www.cnblogs.com/MasterSpark/p/7436987.html
Copyright © 2020-2023  润新知