• 成长轨迹42 【ACM算法之路 百炼poj.grids.cn】【数值转换】【2972、2798、2735、2734、2973】


    一次ac的没啥好说、、、

    2972:确定进制

      1 #include<stdio.h>
    2 #include<string.h>
    3
    4 int a1[10];
    5 int b1[10];
    6 int c1[10];
    7 int main()
    8 {
    9 int t;
    10 scanf("%d",&t);
    11 for(int p=0;p<t;p++)
    12 {
    13 memset(a1,0,sizeof(a1));
    14 memset(b1,0,sizeof(b1));
    15 memset(c1,0,sizeof(c1));
    16 int a,b,c;
    17 scanf("%d%d%d",&a,&b,&c);
    18 if( (c&&(a==0||b==0))||
    19 (a==b&&b==c)||
    20 (a==1&&b!=c)||
    21 (b==1&&a!=c))
    22 printf("0\n");
    23 else
    24 {
    25 int na=0;
    26 if(!a) na=1;//0也是1位
    27 while(a)
    28 {
    29 a1[na]=a%10;
    30 a/=10;
    31 na++;
    32 }
    33
    34
    35 int nb=0;
    36 if(!b) nb=1;
    37 while(b)
    38 {
    39 b1[nb]=b%10;
    40 b/=10;
    41 nb++;
    42 }
    43
    44 int nc=0;
    45 if(!c) nc=1;
    46 while(c)
    47 {
    48 c1[nc]=c%10;
    49 c/=10;
    50 nc++;
    51 }
    52 int a2,b2,c2;
    53 int k;
    54 for(k=2;k<1000000;k++)
    55 {
    56 if(na&&nb&&nc&&(k<=a1[na-1]||k<=b1[nb-1]||k<=c1[nc-1]))
    57 continue;
    58 //if(a1[0]*b1[0]!=c1[0])
    59 // continue;
    60 //【这个不行,因为化成10进制时个位还是会跟原进制的其它位相关】
    61 bool quit = false;
    62 a2=a1[na-1];
    63 for(int j=na-2;j>=0;j--)
    64 {
    65 a2*=k;
    66 a2+=a1[j];
    67 if(a1[j]>=k)
    68 {
    69 quit = true;
    70 break;
    71 }
    72 }
    73 if(quit)
    74 continue;
    75
    76 b2=b1[nb-1];
    77 for(int j=nb-2;j>=0;j--)
    78 {
    79 b2*=k;
    80 b2+=b1[j];
    81 if(b1[j]>=k)
    82 {
    83 quit = true;
    84 break;
    85 }
    86 }
    87 if(quit)
    88 continue;
    89
    90 c2=c1[nc-1];
    91 for(int j=nc-2;j>=0;j--)
    92 {
    93 c2*=k;
    94 c2+=c1[j];
    95 if(c1[j]>=k)
    96 {
    97 quit = true;
    98 break;
    99 }
    100 }
    101 if(quit)
    102 continue;
    103
    104 if(a2*b2==c2)
    105 {
    106 printf("%d\n",k);
    107 break;
    108 }
    109
    110
    111 }
    112 if(k==1000000)
    113 printf("0\n");
    114 }
    115
    116 }
    117 return 0;
    118 }

    2798:2进制转化为16进制

     1 #include<stdio.h>
    2 #include<string.h>
    3
    4 int main()
    5 {
    6 int n;
    7 scanf("%d",&n);
    8 for(int i=0;i<n;i++)
    9 {
    10 char n16[3000];
    11 char n[12000];
    12 scanf("%s",&n);
    13 int leng = strlen(n);
    14 int len16 = (leng+3)/4;
    15
    16 for(int j=leng-4;j>-4;j-=4)
    17 {
    18 int a16=0;
    19 for(int k=0;k<4;k++)
    20 {
    21 a16 *= 2;
    22 if(j+k>=0)
    23 a16+=(n[j+k]-'0');
    24 }
    25 if(a16>=10&&a16<=15)
    26 n16[(j+3)/4]=char('A'+(a16-10));//【向上进位】
    27 else
    28 n16[(j+3)/4]=char('0'+a16);
    29
    30
    31 }
    32 for(int k=0;k<len16;k++)
    33 {
    34 printf("%c",n16[k]);//【注意改回使用数组元素,而非首地址,否则会出来奇怪的字符】
    35 }
    36 printf("\n");
    37 }
    38 return 0;
    39 }

    2735:八进制到十进制

     1 #include<stdio.h>
    2 #include<string.h>
    3
    4 int main()
    5 {
    6 int a;
    7 scanf("%d",&a);
    8 int a10=0;
    9 int mult=1;
    10 while(a)//【越低位乘得越少!!】
    11 {
    12 a10+=mult*(a%10);
    13 mult*=8;
    14 a/=10;
    15 }
    16 printf("%d\n",a10);
    17 return 0;
    18 }

    2734:十进制到八进制

     1 #include<stdio.h>
    2 #include<string.h>
    3
    4
    5 int main()
    6 {
    7 int a;
    8 scanf("%d",&a);
    9 int a8=0;
    10 int mult=1;
    11 while(a)//【越低位乘得越少!!】
    12 {
    13 a8+=mult*(a%8);
    14 mult*=10;
    15 a/=8;
    16 }
    17 printf("%d\n",a8);
    18 return 0;
    19 }

    2973:Skew数

     1 #include<stdio.h>
    2 #include<string.h>
    3
    4 char n[35];
    5 int main()
    6 {
    7 while(1)
    8 {
    9 int skew=0;
    10 scanf("%s",&n);
    11 int leng = strlen(n);
    12 if(leng==1&&n[0]-'0'==0)
    13 break;
    14
    15 int power=2;
    16 skew=n[leng-1]-'0';//【记得减‘0’!】
    17 for(int i=leng-2;i>=0;i--)
    18 {
    19 power*=2;
    20 skew+=((n[i]-'0')*(power-1));
    21 }
    22 printf("%d\n",skew);
    23 }
    24
    25 return 0;
    26 }
  • 相关阅读:
    vmware 安装提示the msi failed
    答辩修改记录
    科研系统修改记录
    python2.7学习记录之四
    sql语句--查询语句(MySQL)
    lei muban
    共模与差模的区别是什么?
    linux pinmux 引脚多路复用驱动分析与使用
    纯虚函数
    内核与驱动文件的version magic匹配问题
  • 原文地址:https://www.cnblogs.com/zeedmood/p/2343380.html
Copyright © 2020-2023  润新知