1871888_re.c

来自「北大大牛代码 1240道题的原代码 超级权威」· C语言 代码 · 共 26 行

C
26
字号
# include <stdio.h>
# include <math.h>

int main()
{
  long roman[500001];
  long m, i, tmp;
  long mark[500001];

  roman[0] = 0;
  mark[0] = (long)pow(2,15);
  for(m = 1; m < 501; m++)
	  mark[m] = 0;
  for(m = 1; m <= 500000; m++)
  {
   tmp = roman[m-1] - m;

   if(tmp<=0||mark[tmp/32]&(long)pow(2,31-tmp%32))
     tmp = roman[m-1] + m;
   mark[tmp/32] |= (long)pow(2,31-tmp%32 );
   roman[m] = tmp;
  }
  while(scanf("%ld",&m)==1&&m!=-1)
   printf("%ld\n",roman[m]);
   return 0;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?