当前位置:编程学习 > C/C++ >>

hdu 2117 (模拟除法运算)

/*

 

 

 

模拟除法,注意不能被除时,加0的次数。。

其实这道题n的范围不够大,可以对n,m都扩

大10^7倍,然否按照int64来处理就可以了,

但为了练练手,自己按模拟写的。。

还有注意n==1的情况

 


2013/04/22-08:45

*/

 

 

[cpp]
#include"stdio.h"  
typedef __int64 int64; 
int main() 

    int i,j,k; 
    int a[100005]; 
    int n,m; 
    int t; 
    while(scanf("%d%d",&n,&m)!=-1) 
    { 
        if(n==1) 
        { 
            printf("0\n"); 
            continue; 
        } 
        i=1; 
        t=1; 
        while(i<=m+1) 
        {            
            while(t<n&&t!=0) 
            { 
                t*=10; 
                if(t>=10&&t<n)//可能需要连续多次加0  
                { 
                    a[i++]=0; 
                } 
            } 
            if(t!=0)//这里要分开。  
            { 
                a[i++]=t/n; 
                t=t%n; 
            } 
            else 
            { 
                a[i++]=0; 
            } 
        } 
        printf("%d\n",a[m]); 
    } 
    return 0; 

#include"stdio.h"
typedef __int64 int64;
int main()
{
 int i,j,k;
 int a[100005];
 int n,m;
 int t;
 while(scanf("%d%d",&n,&m)!=-1)
 {
  if(n==1)
  {
   printf("0\n");
   continue;
  }
  i=1;
  t=1;
  while(i<=m+1)
  {   
   while(t<n&&t!=0)
   {
    t*=10;
    if(t>=10&&t<n)//可能需要连续多次加0
    {
     a[i++]=0;
    }
   }
   if(t!=0)//这里要分开。
   {
    a[i++]=t/n;
    t=t%n;
   }
   else
   {
    a[i++]=0;
   }
  }
  printf("%d\n",a[m]);
 }
 return 0;
}


 

补充:软件开发 , C++ ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,