テキトーなメモ帳

テキトーなメモ帳

AOJ:0233 Book Arrangement

例えば-1944の1の位の数を-10進数変換したいとき
単純に余りを求めようとすると、

-1944 / 10 = -194...-4

となってしまうので

上記の演算結果の余りに対して10を足して

-1944 / 10 = -195...+6

となるようにするのがポイント

#define _USE_MATH_DEFINES
#define INF 10000000

#include <cstdio>
#include <iostream>
#include <sstream>
#include <cmath>
#include <algorithm>
#include <queue>
#include <stack>
#include <limits>
#include <map>
#include <string>
#include <cstring>
#include <set>
#include <deque>
#include <bitset>
#include <list>

using namespace std;

typedef long long ll;
typedef pair<int,int> P;

static const double eps = 1e-8;

int main(){
  int N;
  while(~scanf("%d",&N)){
    if(N==0) break;

    int divisor = -10;
    stack<int> stk;
    while(abs(N)>0){
      int rem = (N % 10 < 0 ? N % 10 + 10 : N % 10);
      stk.push(rem);
      N = (N-rem) / divisor;
    }
    while(!stk.empty()){
      printf("%d",stk.top());
      stk.pop();
    }
    printf("\n");
  }
}