一道自己看了代码才明白的简单构造

//codeforces 520c

//思路:两个字符串,第一个字符串不动,移动第二个的时候,你会发现第二个串的每个字符都会和第一个串的某个字符对一次,所以在构造的时候当然选择出现次数最多的那个

//如果假设次数出现最多的字符有k种,第一个字符有k种选择,第二个有k种选择....第n个字符有k种选择,

//rk(k,n);

#include<iostream>
  using namespace std;
  #define M 1000000007;
  int n;
  char a[100010];
  int c[5];

//二分快速求幂
  long long rk(int n, int k)
 {
     long long res = 1;
     while(k) {
         if(k & 1)
             res *= n, res %= M;
         n *= n;
        n %= M;
         k >>= 1;
     }
     return res;
 }
 int main()
 {
     int i;
     cin>>n>>a;

//遍历字符串,统计每个字符出现的次数
     for(i = 1; i <= n; ++i)
     {
         if(a[i]==‘A‘)
            c[1]++;
         else if(a[i]==‘G‘)
            c[2]++;
         else if(a[i]==‘C‘)
            c[3]++;
         else
            c[4]++;
     }

//找出出现最多次的那个字符出现的次数
     int Max = max(max(c[1], c[2]), max(c[3], c[4]));
     int m=0;

//得到出现最多次字符的种类
     for(i = 1; i <= 4; ++i)
         if(Max == c[i])
             m++;
             cout<<rk(m, n)<<endl;
 }

时间: 2024-10-12 21:22:56

一道自己看了代码才明白的简单构造的相关文章

▇▇▇▇ “练习” —— 为什么我现在才明白这个简单的道理

一个契机:我看到这个模板,都不知道这语法对不对.想去百度找,都是千篇一律像是同一篇抄来的. --> 我才意识到:我缺乏最基础的对该Topic的学习.该Topic下问题的练习. 绝佳的练习机会: 高质量的配套 习题是一本教材的精华-- 因为它提供你面对以后会遇到的.关于该Topic的问题. 今天才突然意识到教材为什么真的重要, 主要因为昨晚想明白了"练习和进步"."学编程和中学学一门课" 是一回事的道理! 结论就清楚了:"C++需要不断的练习"

sklearn源码解析:ensemble模型 零碎记录;如何看sklearn代码,以tree的feature_importance为例

最近看sklearn的源码比较多,好记性不如烂笔头啊,还是记一下吧. 整体: )实现的代码非常好,模块化.多继承等写的很清楚. )predict功能通常在该模型的直接类中实现,fit通常在继承的类中实现,方便不同的子类共同引用. 随机森林 和 GBDT )RandomForest的bootstrap是又放回的:GBDT则是无放回的. )实现的代码非常好,比如GBDT提供了一些小白不常用的函数[staged_decision_function,staged_predict]之类,对于调试观察每个D

我们三十以后才明白(转)

作为一个30岁的程序员,时常会回忆自己的过去,我也不例外,虽然我身在海外,我相信还是会有很多国内的IT朋友和我的想法相同:  当我们懂得珍惜时光的时候,已经发现自己不再年轻. 三十岁,才慢慢的明白. 男女三十而立,三十岁应该是人生的转折点,它不是青春韶华的终结,而是生命的第二起跑线. 三十岁,面对的不应该是没落,而是认知的新起点.很多曾经懵懂的,三十以后才明白真谛.走自己的路:三十以后才明白,别人的目光已不重要,他们的批评和夸奖,事实上无足轻重,不应该成为我们前进和滞留的动力和阻力.真正做到:走

GCC扩展(转--对看kernel代码有帮助

Linux Kernel的代码,上次就发现一个结构体的定义形式看不懂,后来才知道它用的不是标准的ANSI C,而是GCC的一些扩展.刚好看到<Linux内核修炼之道>中对GCC扩展有所描述,转载一下吧,对看kernel代码有所帮助. 3.5内核代码的特点 Linux内核同时使用C语言和汇编语言实现,C语言编写的代码移植性较好.易于维护,而汇编语言编写的代码相当于针对特定的平台做了优化,速度较快,所以需要在它们之间寻找一定的平衡. 一般而言,在体系结构的底层或对执行时间要求严格的地方,会使用汇编

五条垂暮之年才明白的道理

5 life lessons you will learn the hard way五条垂暮之年才明白的道理Life is not easy when you are pursuing something worthwhile and ready to learn from the best experiences. Most of the time, we learn the lessons from the old and wise as they have already been whe

究竟怎样写代码才算是好代码

今天让我们来谈谈代码吧.代码重要吗?当然,代码就是设计(Jack W.Reeves, 1992):代码是最有价值的交付物.我们需要好代码吗?在给"好代码"下个定义之前,这个问题无法回答.那么,究竟什么是好代码? 看下面这段英文解释: 'Good code' is code that works, is bug free, and is readable and maintainable. Some organizations have coding 'standards' that a

我们三十以后才明白

心灵鸡汤一份 当我们懂得珍惜时光的时候,已经发现自己不再年轻. 三十岁,才慢慢的明白. 男女三十而立,三十岁应该是人生的转折点,它不是青春韶华的终结,而是生命的第二起跑线. 三十岁,面对的不应该是没落,而是认知的新起点.很多曾经懵懂的,三十以后才明白真谛.走自己的路:三十以后才明白,别人的目光已不重要,他们的批评和夸 奖,事实上无足轻重,不应该成为我们前进和滞留的动力和阻力.真正做到:走自己的路,让别人去说吧!只要无愧于心,无愧于自己就足够了. 人不应该活在别人疑惑的目光之下,也不应该裹足于别人

MySQL索引-B+树(看完你就明白了)

索引是一种数据结构,用于帮助我们在大量数据中快速定位到我们想要查找的数据.索引最形象的比喻就是图书的目录了.注意这里的大量,数据量大了索引才显得有意义,如果我想要在 [1,2,3,4] 中找到 4 这个数据,直接对全数据检索也很快,没有必要费力气建索引再去查找. 索引在 MySQL 数据库中分三类: B+ 树索引 Hash 索引 全文索引 我们今天要介绍的是工作开发中最常接触到的 InnoDB 存储引擎中的 B+ 树索引.要介绍 B+ 树索引,就不得不提二叉查找树,平衡二叉树和 B 树这三种数据

慢慢才明白

慢慢才明白 说明 这是我初三上学期期末考试考场上写的作文,完全原创.故事中的情节,除了搞竞赛,去探病的“我”是我(writer),其他均是wym妹妹. 谨以此文慰问wy叔叔.yq阿姨以及wym妹妹和wdd妹妹等一家人. 没有经过你们的允许就写这篇作文,在此我也要道个歉.若不想公开,请及时联系我,(.?_?.)?I’m sorry~ 正文 慢慢才明白 以前总以为,人生会是一帆风顺.以前总以为,世上定有静好岁月. 初二那年我过的无忧无虑.我是同学们口中的有钱人家的孩子,人生已经由父母设想好,前途无忧