zoukankan      html  css  js  c++  java
  • CF 136B Ternary Logic

    http://codeforces.com/problemset/problem/136/B

    题意 :就是说tor是一个三进制的运算,代表的是两个三进制数的运算,两个三进制数按位逐一相加后对三取余,没有进位,但是如果两个没有相同多的位数的话,短的那个0。而那个样例就是10进制的14和10进制的59进行tor运算,就相当于分别转化成三进制在进行tor运算,a tor b = c,给你a和c,让你求b 。

    思路 : 其实也没什么好说的,题懂了,基本上思路也就出来了,我也就是把a c都转化成三进制的,然后用c的三进制减a 的三进制,最后再转化成10进制即可 。

    #include<stdio.h>
    #include<string.h>
    #include<iostream>
    using namespace std ;
    int aa[110],bb[110],cc[110] ;
    int tran(int n ,int *s)
    {
        int i = 0 ;
        while(n)
        {
            s[i++] = n%3 ;
            n /= 3 ;
        }
        return i ;
    }
    int main()
    {
        int a,c ;
        memset(aa,0,sizeof(aa)) ;
        memset(bb,0,sizeof(bb)) ;
        memset(cc,0,sizeof(cc)) ;
        while(scanf("%d %d",&a,&c)!=EOF)
        {
            int lena = tran(a,aa) ;
            int lenc = tran(c,cc) ;
            int maxx = lena > lenc?lena:lenc ;
            for(int i = 0 ; i < maxx ; i++)
            {
                cc[i] = cc[i] >= aa[i]?cc[i]:cc[i]+3 ;
                bb[i] = cc[i]-aa[i] ;
            }
            int count = 1 ;
            int b = 0 ;
            for(int i = 0 ; i < maxx ; i++)
            {
                b += (count*bb[i]) ;
                count *= 3 ;
            }
          printf("%d
    ",b) ;
        }
        return 0 ;
    }
    View Code
  • 相关阅读:
    BZOJ 4260: Codechef REBXOR (trie树维护异或最大值)
    BZOJ 3744 Gty的妹子序列 做法集结
    BZOJ 3289: Mato的文件管理 (区间查询逆序对)
    [JSOI2007]文本生成器
    [TJOI2013]单词
    模板 AC自动机
    POJ 3710 Christmas Game
    HDU 3094 A tree game
    BZOJ 3817 Sum
    BZOJ 4589 Hard Nim
  • 原文地址:https://www.cnblogs.com/luyingfeng/p/3417027.html
Copyright © 2011-2022 走看看