#include <iostream>
#include <string>
using namespace std; int fac(int num); int C(int n,int m);
int com( int n, int k );
int main()
{
//freopen("acm.acm","r",stdin);
string s;
int sum;
int j;
int i;
// cout<<com(4,2)<<endl; while(cin>>s)
{
sum = ;
for(i = ; i < s.length()-; ++ i)//把前面的都加起来,看看这个字符串len-1个长度的+len-2····1的字符串一共有多少个
{
sum += com(,i+);
}
// cout<<s<<endl;
// cout<<"sum "<<sum<<endl; //cout<<"len "<<s.length()<<endl;
for(i = ; i < s.length(); ++ i)
{
for(j = i+; j < s.length(); ++ j)
{
if(s[i] >= s[j])
{
break;
}
}
if(j != s.length()) //
{
break;
}
}
if(i != s.length()) //如果字符串不是按照升序排列的,那么要输出0;
{
cout<<<<endl;
continue;
}
for(i = ; i < s.length(); ++ i) //看看当前的字符串在“本长度”中排在什么样的位置。
{
if(i == )
{
j = ;
}
else
{
j = s[i-]-'a'+;
}
for(; j < s[i]-'a'; ++ j) //现在依然是在计算 与当前字符串一样长度的字符串的数量(之前的 ~ )
{
sum += com(-j-,s.length()-i-);//这个组合是固定开头的字符,选取后面的!
}//计算的过程是比如说第一个位置是k,开始固定'a'那么以后的len-1个位置上就是从b~z中选出组合,然后再固定b再选,……
//直到第一个位置是k本身,第一个位置枚举完了,枚举地二个位置,从a开始直到第二个位置的字符本身,依次类推,直到最后一个字符枚举完毕,本 //字符串之前的就算计算完了 因为这样枚举都是本字符串之前 //的了~
}
cout<<sum+<<endl; }
} int C(int n,int m)
{
return fac(n)/(fac(m)*fac(n-m));
} int fac(int num)
{
int i;
int sum = ;
for(i = ; i <= num; ++ i)
{
sum *= i;
}
return sum;
} int com( int n, int k ) //如果用常规的 以前的很笨的方法,会造成大数的溢出
{ if ( k> )
{
return com(n-, k- ) * n / k;//组合公式
}
return ;
}

关注我的公众号,当然,如果你对Java, Scala, Python等技术经验,以及编程日记,感兴趣的话。

技术网站地址: vmfor.com

POJ 1850的更多相关文章

  1. 【POJ 1850】 Code

    [POJ 1850] Code 还是非常想说 数位dp真的非常方便! !. 数位dp真的非常方便!.! 数位dp真的非常方便! !! 重要的事说三遍 该题转换规则跟进制差点儿相同 到z时进一位 如az ...

  2. POJ 1496 POJ 1850 组合计数

    Code Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 8256 Accepted: 3906 Description Tran ...

  3. POJ 1850 Code(组合数)

    http://poj.org/problem?id=1850 题意 :给定字符串,系统是用字符串组成的,字符串是按字典序排的.编码系统有三条规则,1这些的单词的长度是由小到大的,2相同长度的按字母在字 ...

  4. poj 1850 code(组合数学)

    题目:http://poj.org/problem?id=1850 题意:按给定的规则给字母编号. 一个很简单的题目,但是却做了好久.................................. ...

  5. poj 1850/poj 1496

    http://poj.org/problem?id=1850 -----------------http://poj.org/problem?id=1496 两题解法类似..本题为组合数学的题,要求所 ...

  6. POJ 1850 Code

    组合数学.... Code Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 7202 Accepted: 3361 Descrip ...

  7. Code(poj 1850)

    大致题意:(与POJ1496基本一致) 输出某个str字符串在字典中的位置,由于字典是从a=1开始的,因此str的位置值就是 在str前面所有字符串的个数 +1 规定输入的字符串必须是升序排列.不降序 ...

  8. POJ 1850 Code 字符串 难度:1

    题意: 1 如果是严格升序的字母字符串,那么可以输出非0解码,否则不能译码输出0 2 字符串解码 遵循递增原则,其值为 到现在为止的所有按字母序小于该字符串的数量 + 1; #include < ...

  9. poj 1850 1019 (简单位数dp)

    #include<iostream> #include<cstdio> #include<cstring> using namespace std; ][],l,a ...

随机推荐

  1. 链接与ELF文件格式的复习

    在这里复习一下链接的知识: 什么是链接(linking):把源代码形成的模块独立编译后组装成一个整体的的过程叫做链接. 链接主要过程包括:地址和空间分配(address and storage all ...

  2. sql存在一个表而不在另一个表中的数据

    (转)A.B两表,找出ID字段中,存在A表,但是不存在B表的数据.A表总共13w数据,去重后大约3W条数据,B表有2W条数据,且B表的ID字段有索引. 方法一 使用 not in ,容易理解,效率低  ...

  3. 【Qt】QSettings读写注册表、配置文件【转】

    简述 一般情况下,我们在开发软件过程中,都会缓存一些信息到本地,可以使用轻量级数据库sqlite,也可以操作注册表.读写配置文件. 关于QSettings的使用前面已经介绍过了,比较详细,见“更多参考 ...

  4. jQuery ui datepicker 日历转中文

    做个笔记,以后详解 jQuery(function($){ $.datepicker.regional['zh-CN'] = { closeText: '关闭', prevText: '<上月' ...

  5. php取得当前访问url文件名的几种方法

    php下获取当前访问的文件名的几种方法.推荐函数:一是PHP获取当前页面的网址: dedecms用的也是这个哦. <?php //获得当前的脚本网址 function GetCurUrl() { ...

  6. javascript refresh page 几种页面刷新的方法

    Javascript刷新页面的几种方法:1    history.go(0) 2    location.reload() 3    location=location 4    location.a ...

  7. 飞行器的Pitch Yaw Roll概念图解

    前进方向为Z轴 Pitch 升降 绕X轴  对应常见Φ(phi)角: Yaw 偏航 绕Y轴 对应常见θ(theta)角: Roll 翻滚 绕Z轴 对应常见φ(psi)角: 对应表: 参考网址NASA: ...

  8. python 字典内置方法get应用

    python字典内置方法get应用,如果我们需要获取字典值的话,我们有两种方法,一个是通过dict['key'],另外一个就是dict.get()方法. 今天给大家分享的就是字典的get()方法. 这 ...

  9. java实现mysql数据库的备份及还原

    备份: public static void backup() { try { Runtime rt = Runtime.getRuntime(); // 调用 调用mysql的安装目录的命令 Pro ...

  10. Thinkphp模板中使用自定义函数的方法

    注意:自定义函数要放在项目应用目录/common/common.php中. 这里是关键. 模板变量的函数调用格式:{$varname|function1|function2=arg1,arg2,### ...