小珂的数学题
来源:互联网 发布:网络监管局官网 编辑:程序博客网 时间:2024/04/28 08:39
小珂的数学题
时间限制:1000 ms | 内存限制:65535 KB
难度:3
- 描述
今天小珂在书上看到了一种数值表示方式,请你写一个程序帮助她迅速转化一下。题目信息如下:
已知一种对应关系,从a开始按照字典序增加,字符串最长为5,遇到相同的或者后面的字符不比前面的大的字符串就不计数。
a->1
b->2
……
……
z->26
ab->27
ac->28
……
……
vwxyz->83681
……
- 输入
- 会输入少于200行的数据,每一行有一个字符串。如果出现不符合规则的字符串(各个字符不是单调递增)的,输出0,否则输出它对应的数。(例如are 不合规则,对应输出0)
- 输出
- 输出每个结果,换行结束。
- 样例输入
azcatvwxyz
- 样例输出
126083681
思路:
主要是组合数学的内容, 运用两个公式和
详情见:点击打开链接
//poj 166 小珂的数学题#include <stdio.h>#include <string.h>int c[27][27] = {0};char str[10];int main(){int i, j, len, ans;char tc;for(i = 0; i < 27; i++) //用杨辉三角(递推)求c[i][j]:i个字母单调组成j位数的种数{for(j = 0; j <= i; j++){if(j == 0 || i == j){c[i][j] = 1;}else{c[i][j] = c[i-1][j-1] + c[i-1][j];}}} c[0][0] = 0; //take care !while(scanf("%s", str) != EOF){len = strlen(str);for(i = 1; i < len; i++){if(str[i-1] >= str[i]) //若不递增输出0{printf("0\n");break;}}if(i != len){continue;}ans = 0;for(i = 1; i < len; i++){ans += c[26][i]; //将len位之前的所有种数相加}for(i = 0; i < len; i++){for(tc = (i ? str[i-1]+1 : 'a'); tc < str[i]; tc++) //遍历之间所有字母{ans += c['z'-tc][len-i-1]; //将用大于tc的数排成后几位的种数}}printf("%d\n", ans+1); //之前的种数加1}return 0;}
0 0
- 小珂的数学题
- nyoj166 小珂的数学题
- nyoj166-小珂的数学题
- NYOJ166 小珂的数学题(数位dp)
- 小明的数学题2
- xoj cie 1302 小明的数学题
- ACM小明的数学题Ⅲ
- ACM小明的数学题Ⅲ
- POJ 3737 小数学题
- ACM小明的数学题Ⅰ C++实现
- ACM小明的数学题ⅡC++实现
- 一道小小数学题,趣味逻辑的小鸡汤
- ACM小明的数学题Ⅰ C++实现
- ACM小明的数学题ⅡC++实现
- hdu 6108 小C的倍数问题 (数学题)
- 自动生成简单数学题的小程序范例
- NYOJ 330 一个简单的数学题【数学题】
- 一道古老的数学题
- OJ中常用的功能函数(排序)
- Android DiskLruCache完全解析,硬盘缓存的最佳方案
- 【No6.】极光推送 --[客户端]、[服务器端] 详解(增加开机启动服务功能)
- ConcurrentModificationException
- Unity3D中目标相对自身的前后左右方位判断
- 小珂的数学题
- apache mina源码: AbstractIoAcceptor类的defaultLocalAddresses 字段说明
- 在命令行下,如何使用JAD反编译jar文件
- mysql 安全配置
- 希望是可以的,
- linux系统安装有关1: CentOS-6.3安装配置Nginx
- npm常用命令
- Intersecting Lines
- [LeetCode]-Restore IP Addresses