Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1436562
  • 博文数量: 241
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 2253
  • 用 户 组: 普通用户
  • 注册时间: 2012-04-11 22:27
个人简介

--

文章分类

全部博文(241)

文章存档

2021年(3)

2019年(6)

2018年(1)

2017年(9)

2016年(21)

2015年(50)

2014年(125)

2013年(26)

我的朋友

分类: C/C++

2014-03-20 16:58:56


点击(此处)折叠或打开

  1. #include <stdio.h>
  2. #include <string.h>
  3. #define N 1000

  4. int data2str(int num,char* str)
  5. {
  6.     char* tmp = str;
  7.     int len = 0;
  8.     int data;
  9.     int i,j;
  10.     int mid;

  11.     while (num>0)
  12.     {
  13.         data = num%10;
  14.         tmp[len++] = '0'+data;
  15.         num = num/10;
  16.     }
  17.     j = len-1;
  18.     for (i=0;i<len/2;i++,j--)
  19.     {
  20.         mid = tmp[i];
  21.         tmp[i] = tmp[j];
  22.         tmp[j] = mid;
  23.     }
  24.     return len;
  25. }

  26. int Machst(int data)
  27. {
  28.     int MAX = data*data*data;
  29.     int sum = 0;
  30.     int i;
  31.     char str[N]={0};
  32.     char num[10]={0};
  33.     int len_data=0;
  34.     int len = 0;

  35.     if (data<1 || data>100)
  36.     {
  37.         return -1;
  38.     }

  39.     for (i=data*data-data+1;i<=MAX; i+=2)
  40.     {
  41.         sum += i;
  42.         len_data = data2str(i,num);
  43.         strncpy(str+len,num,len_data);
  44.         len +=len_data;

  45.         if (sum == MAX)
  46.         {
  47.             str[len]='\0';
  48.             printf("%s\n",str);
  49.             return 0;
  50.         }
  51.         else if (sum > MAX)
  52.         {
  53.             return -1;
  54.         }
  55.         strncpy(str+len,"+",1);
  56.         len += 1;
  57.     }
  58.     return -1;
  59. }

  60. int main()
  61. {
  62.     int data;

  63.     scanf("%d",&data);
  64.     if (Machst(data) == -1)
  65.     {
  66.         printf("-1\n");
  67.     }
  68.     return 0;
  69. }

阅读(519) | 评论(0) | 转发(0) |
0

上一篇:OJ-24点算法[没有全AC]

下一篇:OJ-合唱队形

给主人留下些什么吧!~~