成长轨迹42 【ACM算法之路 百炼poj.grids.cn】【数值转换】【2972、2798、2735、2734、2973】
2012-02-08 23:26
531 查看
一次ac的没啥好说、、、
2972:确定进制
2798:2进制转化为16进制
2735:八进制到十进制
2734:十进制到八进制
2973:Skew数
2972:确定进制
#include<stdio.h> #include<string.h> int a1[10]; int b1[10]; int c1[10]; int main() { int t; scanf("%d",&t); for(int p=0;p<t;p++) { memset(a1,0,sizeof(a1)); memset(b1,0,sizeof(b1)); memset(c1,0,sizeof(c1)); int a,b,c; scanf("%d%d%d",&a,&b,&c); if( (c&&(a==0||b==0))|| (a==b&&b==c)|| (a==1&&b!=c)|| (b==1&&a!=c)) printf("0\n"); else { int na=0; if(!a) na=1;//0也是1位 while(a) { a1[na]=a%10; a/=10; na++; } int nb=0; if(!b) nb=1; while(b) { b1[nb]=b%10; b/=10; nb++; } int nc=0; if(!c) nc=1; while(c) { c1[nc]=c%10; c/=10; nc++; } int a2,b2,c2; int k; for(k=2;k<1000000;k++) { if(na&&nb&&nc&&(k<=a1[na-1]||k<=b1[nb-1]||k<=c1[nc-1])) continue; //if(a1[0]*b1[0]!=c1[0]) // continue; //【这个不行,因为化成10进制时个位还是会跟原进制的其它位相关】 bool quit = false; a2=a1[na-1]; for(int j=na-2;j>=0;j--) { a2*=k; a2+=a1[j]; if(a1[j]>=k) { quit = true; break; } } if(quit) continue; b2=b1[nb-1]; for(int j=nb-2;j>=0;j--) { b2*=k; b2+=b1[j]; if(b1[j]>=k) { quit = true; break; } } if(quit) continue; c2=c1[nc-1]; for(int j=nc-2;j>=0;j--) { c2*=k; c2+=c1[j]; if(c1[j]>=k) { quit = true; break; } } if(quit) continue; if(a2*b2==c2) { printf("%d\n",k); break; } } if(k==1000000) printf("0\n"); } } return 0; }
2798:2进制转化为16进制
#include<stdio.h> #include<string.h> int main() { int n; scanf("%d",&n); for(int i=0;i<n;i++) { char n16[3000]; char n[12000]; scanf("%s",&n); int leng = strlen(n); int len16 = (leng+3)/4; for(int j=leng-4;j>-4;j-=4) { int a16=0; for(int k=0;k<4;k++) { a16 *= 2; if(j+k>=0) a16+=(n[j+k]-'0'); } if(a16>=10&&a16<=15) n16[(j+3)/4]=char('A'+(a16-10));//【向上进位】 else n16[(j+3)/4]=char('0'+a16); } for(int k=0;k<len16;k++) { printf("%c",n16[k]);//【注意改回使用数组元素,而非首地址,否则会出来奇怪的字符】 } printf("\n"); } return 0; }
2735:八进制到十进制
#include<stdio.h> #include<string.h> int main() { int a; scanf("%d",&a); int a10=0; int mult=1; while(a)//【越低位乘得越少!!】 { a10+=mult*(a%10); mult*=8; a/=10; } printf("%d\n",a10); return 0; }
2734:十进制到八进制
#include<stdio.h> #include<string.h> int main() { int a; scanf("%d",&a); int a8=0; int mult=1; while(a)//【越低位乘得越少!!】 { a8+=mult*(a%8); mult*=10; a/=8; } printf("%d\n",a8); return 0; }
2973:Skew数
#include<stdio.h> #include<string.h> char n[35]; int main() { while(1) { int skew=0; scanf("%s",&n); int leng = strlen(n); if(leng==1&&n[0]-'0'==0) break; int power=2; skew=n[leng-1]-'0';//【记得减‘0’!】 for(int i=leng-2;i>=0;i--) { power*=2; skew+=((n[i]-'0')*(power-1)); } printf("%d\n",skew); } return 0; }
相关文章推荐
- 成长轨迹43 【ACM算法之路 百炼poj.grids.cn】【数值转换】【2765:八进制小数】
- 成长轨迹52 【ACM算法之路 百炼poj.grids.cn】【字符串处理】【2743:字符串判等】
- 成长轨迹54 【ACM算法之路 百炼poj.grids.cn】【简单枚举】【2739:计算对数】
- 成长轨迹61 【ACM算法之路 百炼poj.grids.cn】【动态规划】【2806、1661、2757】
- 成长轨迹55 【ACM算法之路 百炼poj.grids.cn】【简单枚举】【2812:恼人的青蛙】
- 成长轨迹44 【ACM算法之路 百炼poj.grids.cn】【字符串处理】【2799、2976、2975、2742】
- 百炼--进制转换---2735---2798---2734
- 成长轨迹45 【ACM算法之路 百炼poj.grids.cn】【字符串处理】【2797:最短前缀】
- 成长轨迹47 【ACM算法之路 百炼poj.grids.cn】【字符串处理】【2820:古代密码】
- 成长轨迹48 【ACM算法之路 百炼poj.grids.cn】【字符串处理】【2818:密码】
- 成长轨迹46 【ACM算法之路 百炼poj.grids.cn】【字符串处理】【2804:词典】
- 成长轨迹49 【ACM算法之路 百炼poj.grids.cn】【字符串处理】【2819:W的密码】
- 成长轨迹57 【ACM算法之路 百炼poj.grids.cn】【递归】【2754、2816、2753、】
- 成长轨迹58 【ACM算法之路 百炼poj.grids.cn】【递归】【1664:放苹果】
- 成长轨迹50 【ACM算法之路 百炼poj.grids.cn】【字符串处理】【2974:487-3279】
- 成长轨迹59 【ACM算法之路 百炼poj.grids.cn】【递归】【2694:逆波兰表达式】
- 成长轨迹51 【ACM算法之路 百炼poj.grids.cn】【字符串处理】【2744:子串】
- 成长轨迹53 【ACM算法之路 百炼poj.grids.cn】【简单枚举】【2747、2810、2692、2977】
- 成长轨迹56 【ACM算法之路 百炼poj.grids.cn】【简单枚举】【2811:熄灯问题】
- 成长轨迹60 【ACM算法之路 百炼poj.grids.cn】【递归】【2756:二叉树】