• hihoCoder编程练习赛69


    题目1 : 偶数长度回文子串

    时间限制:5000ms
    单点时限:1000ms
    内存限制:256MB

    描述

    给定一个小写字母字符串,请判断它是否有长度为偶数的非空连续回文子串

    输入

    输入包含多组数据。

    每组数据包含一行一个小写字母字符串 S

    1 ≤ |S| ≤ 105

    输出

    对于每组数据如果存在,输出YES,否则输出NO

    样例输入
    cabbad
    ababa
    样例输出
    YES
    NO
     1 // 2018-07-29
     2 #include <cstdio>
     3 #include <cstring>
     4 #include <iostream>
     5 #include <algorithm>
     6 
     7 using namespace std;
     8 
     9 string str;
    10 
    11 bool check(int p){
    12     if(str[p] == str[p+1])return true;
    13     else return false;
    14 }
    15 
    16 int main()
    17 {
    18     while(cin>>str){
    19         int len = str.length();
    20         bool ok = false;
    21         for(int ptr = 0; ptr < len-1; ptr++)
    22             if(check(ptr)){
    23                 cout<<"YES"<<endl;
    24                 ok = true;
    25                 break;
    26             }
    27         if(!ok)cout<<"NO"<<endl;
    28     }
    29 
    30     return 0;
    31 }
    View Code

    题目2 : 特工配对

    时间限制:20000ms
    单点时限:1000ms
    内存限制:256MB

    描述

    在 A 国有一个秘密特工组织,这个特工组织是由若干对双人组合构成的

    现在特工组织有一批新人加入,为了防止背叛,组织规定来自相同城市的人不能配对在一起

    现在已知 A 国有 n 个城市,且新人中来自第 i 个城市的有 ai 人,求最多组成几个配对

    输入

    第一行一个正整数 n

    第二行 n 个数,第 i 个数是 ai

    1 ≤ n ≤ 103

    0 ≤ ai ≤ 109

    输出

    输出最多组成几个配对

    样例输入
    3
    1 2 3
    样例输出
    3
     1 // 2018-07-29
     2 #include <cstdio>
     3 #include <cstring>
     4 #include <iostream>
     5 #include <algorithm>
     6 
     7 using namespace std;
     8 
     9 int main()
    10 {
    11     int n, a;
    12     cin>>n;
    13     long long sum = 0;
    14     int mx=0;
    15     for(int i = 0; i < n; i++){
    16         cin>>a;
    17         sum += a;
    18         mx = max(mx, a);
    19     }
    20     if(mx > sum-mx)cout<<sum-mx<<endl;
    21     else cout<<sum/2<<endl;
    22 
    23     return 0;
    24 }
    View Code

    题目3 : 阶乘问题

    时间限制:20000ms
    单点时限:1000ms
    内存限制:256MB

    描述

    给定 n, k,求一个最大的整数 m,使得 km 是 n! 的约数

    输入

    第一行两个正整数 n, k

    2 ≤ n,k ≤ 109

    输出

    输出最大的 m

    样例输入
    5 2
    样例输出
    3
     1 // 2018-07-29
     2 #include <cstdio>
     3 #include <cstring>
     4 #include <iostream>
     5 #include <algorithm>
     6 #include <map>
     7 #define ll long long
     8 
     9 using namespace std;
    10 
    11 const ll INF = 0x3f3f3f3f3f3f3f3f;
    12 
    13 map<ll, ll> factor;
    14 
    15 void get_fact(ll k){
    16     for(ll i = 2; i <= k; i++){
    17         if(k%i == 0){
    18             while(k%i==0){
    19                 factor[i]++;
    20                 k/=i;
    21             }
    22         }
    23     }
    24 }
    25 
    26 void print_factor(){
    27     for(auto &f: factor){
    28         cout<<f.first<<" "<<f.second<<endl;
    29     }
    30 }
    31 
    32 int main()
    33 {
    34     ll n, k;
    35     while(cin>>n>>k){
    36         factor.clear();
    37         if(k > n){
    38             cout<<0<<endl;
    39             continue;
    40         }
    41         get_fact(k);
    42         ll ans = INF;
    43         for(auto &f: factor){
    44             ll a = f.first;
    45             ll b = f.second;
    46             ll sum = 0;
    47             ll tmp = a;
    48             while(tmp <= n){
    49                 sum += n/tmp;
    50                 tmp *= a;
    51             }
    52             ans = min(ans, sum/b);
    53         }
    54         cout<<ans<<endl;
    55     }
    56 
    57     return 0;
    58 }
    View Code
    
    
  • 相关阅读:
    分公司下拉框赋值-从后台传到前端jsp
    EASYUI DATAGRID加合计
    Quartz_TimeJob例子(C#)
    JAVA项目如何打开,打开乱码怎么办,字体太小怎么办,感叹号是什么情况
    下拉框设置下拉列表宽度
    获取dataset结果集的第一行第一列字段
    安装visio冲突
    ubuntu创建普通用户,解决远程登录失败
    ubuntu中文环境配置
    stackoverflow访问慢
  • 原文地址:https://www.cnblogs.com/Penn000/p/9385908.html
Copyright © 2020-2023  润新知