已知采样频率(单位KHz)、量化位数、声道数及持续时间(单位分钟),求未压缩时的数据量(单位MB).
例如:
输入: 22.05 16 2 3 (空格分隔)
输出:15.1MB(保留小数点后一位)
- #include
-
- int main(){
- float freq,bit,path,time;
- scanf("%f %f %f %f",&freq,&bit,&path,&time);
- //cin>>freq>>bit>>path>>time;
- float memory=freq*1000*bit*path*time*60/8;
- memory/=1048576;
- printf("%.1fMB",memory);
- return 0;
- }
注:此题注意最后需要加【MB】字样,否则无法ac。
该字符序列中含有a,b,c,d5个字符,输入为各字符的出现概率,及需要编码的字符序列,输出为算术编码区间(保留小数点后10位)。
例如:
输入:
0.2 0.3 0.1 0.15 0.25(空格分隔)
aaabded (待编码字符序列)
输出:
0.0033640000
0.0033775000
- #include
- using namespace std;
- #include
- #include
-
- int main(){
- double a,b,c,d,e;
- cin>>a>>b>>c>>d>>e;
-
- char wait[100];
- scanf("%s",wait);
-
- double aa,bb,cc,dd,left=0,right=1;
- int len=strlen(wait);
-
- aa=a;
- bb=a+b;
- cc=a+b+c;
- dd=a+b+c+d;
-
- for(int i=0;i
- char t=wait[i];
- double gap=right-left;
- double myleft=left;
- if(t=='a'){
- right=gap*aa+myleft;
- }
- else if(t=='b'){
- left=gap*aa+myleft;
- right=gap*bb+myleft;
- }
- else if(t=='c'){
- left=gap*bb+myleft;
- right=gap*cc+myleft;
- }
- else if(t=='d'){
- left=gap*cc+myleft;
- right=gap*dd+myleft;
- }
- else{
- left=gap*dd+myleft;
- }
- }
- printf("%.10f\n%.10f",left,right);
- return 0;
- }
3:对采用算术编码的符号序列进行译码,输出原始的符号序列
对于由a,b,c,d,e 5个符号组成的符号序列,输入各符号的出现概率及其算术编码,输出译码后的符号,符号长度是10位。
例如:
输入:
0.2 0.3 0.1 0.15 0.25 (空格分隔)
0.0033713425
输出:
aaabdedcbe
- #include
- using namespace std;
- #include
- #include
- /*
- 0.2 0.3 0.1 0.15 0.25
- 0.0033713425
- */
-
- int main(){
- double a,b,c,d,e,result;
- cin>>a>>b>>c>>d>>e;
- cin>>result;
-
- double aa,bb,cc,dd,left=0,right=1;
- aa=a;
- bb=a+b;
- cc=a+b+c;
- dd=a+b+c+d;
-
- char ret[100];
- int cnt=0;
- while(1){
- double gap=right-left;
- double node1=left+gap*aa;
- double node2=left+gap*bb;
- double node3=left+gap*cc;
- double node4=left+gap*dd;
-
- if(cnt==10){//left==right
- break;
- }
-
- if(result>=left && result
- ret[cnt++]='a';
- right=node1;
- }
- else if(result>=node1 && result
- ret[cnt++]='b';
- left=node1;
- right=node2;
- }
- else if(result>=node2 && result
- ret[cnt++]='c';
- left=node2;
- right=node3;
- }
- else if(result>=node3 && result
- ret[cnt++]='d';
- left=node3;
- right=node4;
- }
- else{
- ret[cnt++]='e';
- left=node4;
- }
- }
-
- for(int i=0;i
- cout<
- }
- return 0;
- }
-
相关阅读:
算法竞赛入门【码蹄集进阶塔335题】(MT2321-2325)
如何使用 Python 开发企业文档管理应用程序 (教程含源码)
【机器学习】什么是随机马尔科夫决策过程?
(十三)数据结构-树与二叉树的应用
【英雄哥六月集训】第 24天: 线段树
stm32管脚重映射
小满Vue3第四十五章(Vue3 Web Components)
Spring5学习笔记之整合MyBatis
MEMS制造的基本工艺——晶圆键合工艺
【JavaSE】Java数组
-
原文地址:https://blog.csdn.net/m0_65787507/article/details/133430177