zoukankan      html  css  js  c++  java
  • hdoj 1271 整数对

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1271

    解题思路:设所求为 x=a+b*10k+c*10k+1 , 拿走 x 的第 k 位,得到 y=a+c*10k , 则 n=x+y=2*a+b*10k+11*c*10k .

     1 ///////////////////////////////////////////////////////////////////////////
     2 //problem_id: hdoj 1271
     3 //user_id: SCNU20102200088
     4 ///////////////////////////////////////////////////////////////////////////
     5 
     6 #include <algorithm>
     7 #include <iostream>
     8 #include <iterator>
     9 #include <iomanip>
    10 #include <cstring>
    11 #include <cstdlib>
    12 #include <string>
    13 #include <vector>
    14 #include <cstdio>
    15 #include <cctype>
    16 #include <cmath>
    17 #include <queue>
    18 #include <stack>
    19 #include <list>
    20 #include <set>
    21 #include <map>
    22 using namespace std;
    23 
    24 ///////////////////////////////////////////////////////////////////////////
    25 typedef long long LL;
    26 const double PI=acos(-1.0);
    27 
    28 const int x4[]={-1,0,1,0};
    29 const int y4[]={0,1,0,-1};
    30 const int x8[]={-1,-1,0,1,1,1,0,-1};
    31 const int y8[]={0,1,1,1,0,-1,-1,-1};
    32 
    33 typedef int T;
    34 T max(T a,T b){ return a>b? a:b; }
    35 T min(T a,T b){ return a<b? a:b; }
    36 ///////////////////////////////////////////////////////////////////////////
    37 
    38 ///////////////////////////////////////////////////////////////////////////
    39 //Add Code:
    40 ///////////////////////////////////////////////////////////////////////////
    41 
    42 int main(){
    43     ///////////////////////////////////////////////////////////////////////
    44     //Add code:
    45     int n,k,a,b,c;
    46     set<int> s;
    47     while(scanf("%d",&n)!=EOF){
    48         if(n==0) break;
    49         s.clear();
    50         for(k=1;k<=n;k*=10){
    51             c=n/k/11;
    52             b=n/k%11;
    53             if((b!=0 || c!=0) && b<10){
    54                 a=(n-b*k-c*11*k)/2;
    55                 if(2*a+b*k+c*11*k==n) s.insert(a+b*k+c*10*k);
    56             }
    57             b--;
    58             if((b!=0 || c!=0) && b>=0){
    59                 a=(n-b*k-c*11*k)/2;
    60                 if(2*a+b*k+c*11*k==n) s.insert(a+b*k+c*10*k);
    61             }
    62         }
    63         if(s.empty()) printf("No solution.
    ");
    64         else{
    65             set<int>::iterator it=s.begin();
    66             printf("%d",*it);
    67             while(++it!=s.end()) printf(" %d",*it);
    68             printf("
    ");
    69         }
    70     }
    71     ///////////////////////////////////////////////////////////////////////
    72     return 0;
    73 }
    74 
    75 ///////////////////////////////////////////////////////////////////////////
    76 /*
    77 Testcase:
    78 Input:
    79 34
    80 152
    81 21
    82 0
    83 Output:
    84 27 31 32
    85 126 136 139 141
    86 No solution.
    87 */
    88 ///////////////////////////////////////////////////////////////////////////
  • 相关阅读:
    html5---音频视频基础一
    SQL--数据库性能优化详解
    微信--入门开发
    MVC----基础
    jquery -----简单分页
    sql优化
    集合的总结
    java并发编程与高并发解决方案
    java中boolean类型占几个字节
    正则表达式小结
  • 原文地址:https://www.cnblogs.com/linqiuwei/p/3276866.html
Copyright © 2011-2022 走看看