第十届山东理工大学ACM网络编程擂台赛 正式赛H

From axuhongbo, 3 Years ago, written in Plain Text, viewed 422 times.
URL http://axuhongbo.top/paste/view/796c9e0b Embed
Download Paste or View Raw
  1. #include <stdio.h>
  2. #include <string.h>
  3. int a[1005], b[1005], c[1005], pa, pb, pc, p;
  4. int ans[200005];
  5. int main()
  6. {
  7.     a[0] = 1;
  8.     pa = 1;
  9.     b[0] = 1;
  10.     pb = 1;
  11.     ans[1] = ans[2] = 1;
  12.     p = 3;
  13.     int k, i, ad, n;
  14.     for(k = 3; k <= 1000; k++)
  15.     {
  16.         ad = 0;
  17.         for(i = 0; i < pa || i < pb; i++)
  18.         {
  19.             if(i < pa && i < pb)
  20.             {
  21.                 c[i] = (a[i] + b[i] + ad) % 10;
  22.                 ad = (a[i] + b[i] + ad) / 10;
  23.             }
  24.             else if(i < pa)
  25.             {
  26.                 c[i] = (a[i] + ad) % 10;
  27.                 ad = (a[i] + ad) / 10;
  28.             }
  29.             else if(i < pb)
  30.             {
  31.                 c[i] = (b[i] + ad) % 10;
  32.                 ad = (b[i] + ad) / 10;
  33.             }
  34.         }
  35.         pc = i;
  36.         if(ad != 0)
  37.             c[pc++] = ad;
  38.         for(i = 0; i < pb; i++)
  39.             a[i] = b[i];
  40.         pa = pb;
  41.         for(i = 0; i < pc; i++)
  42.             b[i] = c[i];
  43.         pb = pc;
  44.         for(i = pc - 1; i >= 0; i--)
  45.         {
  46.             ans[p++] = c[i];
  47.         }
  48.     }
  49.     scanf("%d", &n);
  50.     printf("%d\n", ans[n]);
  51.     return 0;
  52. }

Reply to "第十届山东理工大学ACM网络编程擂台赛 正式赛H"

Here you can reply to the paste above

captcha