zoukankan      html  css  js  c++  java
  • hdu 1271

    看过别人的解题思路才做出来的,解题思路网上一大片……把这个代码贴出来,是觉得有个问题大家一定要注意,就是可能有重复的值……

    #include "stdio.h"
    #include "stdlib.h"
    #include "string.h"

    int ans[1000];

    int cmp(const void *a,const void *b)
    {
     return (*((int *)a)-*((int *)b));
    }

    int main()
    {
     int n;
     int i,k,t,a,b,c;

     while(scanf("%d",&n)==1)
     {
      if(!n)
       break;
      k=0;
      t=1;
      memset(ans,0,sizeof(ans));
      while(n/t!=0)
      {
       a=n/t/11;
       b=n/t%11;
       if(b<10&&a+b!=0)
       {
        c=n-(11*a+b)*t;
        if(c%2==0)
        {
         ans[k++]=a*t*10+b*t+c/2;
        }
       }
       b--;
       if(b>=0&&a+b!=0)
       {
        c=n-(11*a+b)*t;
        if(c%2==0)
        {
         ans[k++]=a*t*10+b*t+c/2;
        }
       }
       t=t*10;
      }
      qsort(ans,k,sizeof(int),cmp);
      if(!k)
       printf("No solution.\n");
      else
      {
       printf("%d",ans[0]);
       for(i=1;i<k;i++)
        if(ans[i]!=ans[i-1])//就是这里的问题,必须得排除重复值的问题!因为没有注意到这个问题,纠结了不少时间!
        printf(" %d",ans[i]);
       printf("\n");
      }
     }

     return 0;
    }

     感触:数学类的题目都是那么需要技巧啊~~~  


     

  • 相关阅读:
    CLR via C# 3rd Edition下载
    SQL中的CASE WHEN语句
    为何要写注释?
    插件购票的公平性分析
    数据查询
    国产操作系统的市场运作策略
    0/0=2?
    为什么0.1无法被二进制小数精确表示?
    .net 可能要遭到取缔
    思考问题要先注意主体
  • 原文地址:https://www.cnblogs.com/Shirlies/p/2347759.html
Copyright © 2011-2022 走看看