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

    这个题目的思路,是这样的我们假设数字A是这样的一个数字 a*(10^(k+1)) + b*(10^k) + c 其中 a 为任意数字,b为去掉的那一位数字,范围 [0,9] 的整数,c<10^k 。则去掉b后的数字B为 a*(10^k) + c ,而A+B的值可以用一下式子表示 (11*a+b)*(10^k) + 2*c 这个值等于 n , 我们枚举 k的值,从0到10 ,对于取定的k值,显然有一下对应 2*c = n%(10^k) 或者 2*c = n%(10^k) + 10^k ; 可以求出整数c的值,然后枚举 b的值,来确定a的值,使得a的值为整数 /..计算中可能会出现重复的结果,输出是记得要处理一下哦

    #include<iostream>
    #include
    <algorithm>
    using namespace std;
    int re[100];
    int main()
    {
        
    int n,a,i,j,k,num,x,y,temp,tt;

        
    while(scanf("%d",&n) &&n)
        {
            num 
    = 0,tt = 1;
            
    for(k =0; k <= 10; k ++){
                
    for(j = 0; j < 2; j ++){
                    y 
    = n% tt,x = n/tt;
                    
    if(j == 1)
                        y 
    += tt,x --;
                    
    if(x > 0 && y % 2 == 0){
                        
    for(i = 0; i <= 9; i ++){
                            
    if((x-i)%11 == 0){
                                a 
    = (x-i)/11;
                                temp 
    = tt*(a*10 +i) + y/2;
                                re[num
    ++= temp;    }}}}
                tt 
    *= 10;
            }
            sort(re,re
    +num);
            
    if(num == 0)    printf("No solution.\n");
            
    else{
                printf(
    "%d",re[0]);
                
    for(i =1; i < num; i ++)
                    
    if(re[i] != re[i-1])    printf(" %d",re[i]);
                printf(
    "\n");
            }
        }
        
    return 0;
    }
  • 相关阅读:
    leetcode 136 只出现一次的数字
    echo命令 显示内容
    cat 命令 查看文件内容
    more命令 分屏查看文件
    tree 命令 以树形显示目录
    leetcode 16 最接近三数之和 双指针问题
    破解NFC卡
    小米手机root
    软件设计文档
    下属做事拖拉怎么办
  • 原文地址:https://www.cnblogs.com/anderson0/p/2040308.html
Copyright © 2011-2022 走看看