华师大 OJ 3053
题目链接:点击打开链接
这里要注意的是
1. long long 类型应该怎么输出
2. 题目的意思要准确地理解,有可能会出现11111111,这种边界情况,这个时候,这是要按照2进制来做的。所以要另外考虑。
解决方案:
/******************************************************************************/
/* */
/* DON'T MODIFY main() function anyway! */
/* */
/******************************************************************************/#include <stdio.h>
#include <string.h>void solve(); /* write function solve() to process one case of the problem */
void init(){}int main()
{ int i,t; init();scanf("%d\n",&t);for (i=0;i<t;i++){ printf("case #%d:\n",i);solve();}return 0;
}void solve(){char str[61];int record[128];int t[60];int diffNum;int base;int i;int length;long long out = 0;gets(str);//if(strlen(str)==1){printf("0\n");return;}diffNum=0;for(i=0;i<128;i++){record[i] = -1;//-1代表没有出现过ascii码对应于i的符号。}for(i = 0; i < strlen(str);i++){if(record[str[i]] == -1){diffNum++;if(diffNum==1) record[str[i]] = 1;else if(diffNum==2) record[str[i]] = 0;else {record[str[i]] = diffNum-1;}}}base = diffNum; //意思是base的进制,但是对于diffNum=1的时候,要另外处理。if(base < 2) base = 2;//根据我们设置好的顺序进行替换,得到数字串for(i = 0;i < strlen(str);i++){t[i] = record[str[i]];}//我们暂时不考虑1进制的情况。length = strlen(str);for(i=0;i < length;i++){out = out*base + t[i];}printf("%I64d\n",out);
}
华师大 OJ 3053相关推荐
- 华师大 OJ 2822
题目链接:点击打开链接 这个OJ平台很傻,输出的时候,在一行的末尾少输出一个空格都可能会出错的. 代码 #include <stdio.h> #include <stdlib.h&g ...
- 华师大 OJ 3040
题目描述:点击打开链接 这道题目还是一样的方法.使用分布的思想方法就可以了. 代码: #include <stdio.h> #include <stdlib.h> #inclu ...
- 华师大 OJ 3055
题目描述:点击打开链接 值得一提的是,对这里的题目描述要理解准确. #include <stdio.h> #include <stdlib.h> #include <st ...
- 华师大 OJ 3026
题目链接:点击打开链接 这个题目做了2个小时.这些代码的确是值得学习借鉴的. 解决方案: #include <string.h> #include <stdio.h>void ...
- 华师大 OJ 2897
题目描述:点击打开链接 值得一提的是:需要把这个用来输出的字符串最后手动补上一个0, tmp[count]='\0'; 解决方法: #include <stdio.h> #include ...
- 华师大 OJ 3024
题目描述:点击打开链接 值得一提的是,抽象数据类型定义好,然后把函数实现好. 解决代码: /****************************************************** ...
- 华师大 OJ 2850
题目描述:点击打开链接 这个是真的简单 解决方案: #include <stdio.h> #include <stdlib.h> #include <string.h&g ...
- 华师大 OJ 3023
题目描述:点击打开链接 值得一提的是:这个问题调用了递归的方法来解决问题 另外,一开始的时候,我在cmp_char里面直接使用了return strcmp(*((char*)a),*((char*)b ...
- 华师大 OJ 2876
题目描述:点击打开链接 这里要注意的是大整数进行除法的或者减法的时候,要记得判断当前大整数是不是大于0的. 因为我们这里定义的大整数只是自然数(N>=0) 解决方案: // 14:25--> ...
最新文章
- 2021各国人均GDP(IMF2021年10月版)
- 从基础设施到云原生应用,全方位解读阿里云原生新锐开源项目
- oracle动态 returning,oracle returning
- boost::ptr_vector相关的测试程序
- 忘却的旋律java2_mc忘却的旋律启动器下载
- 关于 SAP Spartacus SSR 服务器返回的响应是否应该被缓存的问题
- 十分钟学会制作一个漂亮的在线文档
- python怎样切换到上一行_如何返回到python中的前一行?
- 缓存雪崩,缓存穿透解决方案
- 通过 powershell 配置 IIS
- 安装redis 5.0.5版本 真香警告
- 一文读懂模拟电路和数字电路之间的区别和联系
- java 解析yml文件
- B站最近很火的damedane,unravel图片唱歌
- go 学习笔记之10 分钟简要理解 go 语言闭包技术
- 手Q与微信:最终结局将会是手足相残!
- 深度学习框架zf_深度学习十大框架比较
- IOS目标检测(翻译)
- “拧毛巾”和“吹泡泡”
- 网络安全行业与就业-网络安全事件分类