poj 3077

poj 3077
这个题就是用一个递归转化数字。10以下的不用转换。
#include<iostream>
using namespace std;
int k;
int ff(int a)
{
 int sum=1;
 for(int i=0;i<a;i++)
  sum*=10;
 return sum;
}
void convert(int a)
{
 if(k/ff(a)==0)
  return ;
 else
 {
  if(k%ff(a)>=ff(a)/2)
   k=k/ff(a)+1;
  else
   k=k/ff(a);
  k*=ff(a);
  convert(a+1);  
 }
}
int main()
{
 int n;
 cin>>n;
 while(n--)
 {
  cin>>k;
  if(k<10)
  {
   cout<<k<<endl;
   continue;
  }
  convert(1);
  cout<<k<<endl;
 }
 return 0;
}

你可能感兴趣的:(poj 3077)