zoukankan      html  css  js  c++  java
  • 成长轨迹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 }
  • 相关阅读:
    use paramiko to connect remote server and execute command
    protect golang source code
    adjust jedi vim to python2 and python3
    install vim plugin local file offline
    add swap file if you only have 1G RAM
    datatables hyperlink in td
    django rest framework custom json format
    【JAVA基础】网络编程
    【JAVA基础】多线程
    【JAVA基础】String类的概述和使用
  • 原文地址:https://www.cnblogs.com/zeedmood/p/2343380.html
Copyright © 2011-2022 走看看