티스토리 뷰

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWO6cgzKOIEDFAWw&categoryId=AWO6cgzKOIEDFAWw&categoryType=CODE

 

 

숫자 4를 사용하지 못하므로 기존의 10진법에서 4를 하나 뺀 9진법으로 생각하자. 4 이상의 숫자들을 하나씩 줄여준 다음 10진법으로 바꾼다. 0층이 없으므로 부호에 따라 계산에 유의하자.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <stdio.h>
typedef long long ll;
 
ll cvt(char *a,ll len,ll sign)
{
    ll start=sign?0:1,ret=0;
    for(ll i=len-1,j=1;i>=start;i--,j*=9)
    {
        if(a[i]>'3') a[i]--;
        ret+=(a[i]-'0')*j;
    }
    return ret;
}
 
int main()
{
    ll t;
    scanf("%lld",&t);
    for(ll k=1;k<=t;k++)
    {
        char a[20],b[20];
        scanf("%s %s",a,b);
        ll la=0,lb=0// 길이
        while(a[la]) la++;
        while(b[lb]) lb++;
        ll sa=1,sb=1// 부호
        if(a[0]=='-') sa=0;
        if(b[0]=='-') sb=0;
        ll A,B,ans;
        A=cvt(a,la,sa),B=cvt(b,lb,sb);
        if(!sa && !sb) ans=A-B;
        else if(!sa && sb) ans=A+B-1;
        else ans=B-A;
        printf("#%lld %lld\n",k,ans);
    }
    return 0;
}
cs

'Algorithm > SW Expert Academy' 카테고리의 다른 글

1251 하나로  (0) 2018.09.06
1868 파핑파핑 지뢰찾기  (0) 2018.09.05
3282 0/1 Knapsack  (0) 2018.04.12
3260 두 수의 덧셈  (0) 2018.04.11
3304 최장 공통 부분 수열  (0) 2018.04.11
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday