| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
这题主要是一个除法的模拟,和贪心的简单思想,题意我就不说了,贴一下代码,重点是调用函数的时候#include <stdio.h>
#include <string.h>
char str[10000];
char temp[10000];
int dir(int i)//主要模拟一个数除以一个个位数的过程,就是除法计算图的模拟
{
memset(temp,'\0',sizeof temp);
int j;
int mod=0;
for(j=0;str[j]!='\0';j++)
{
mod=mod*10+str[j]-'0';
temp[j]=mod/i+'0';
mod=mod%i;
}
temp[j]='\0';
j=0;
while(str[j]=='0')
j++;
if(mod)
return 0;
else
{
strcpy(str,temp+j);
return 1;
}
}
int main()
{
while(1)
{
scanf("%s",str);
int i;
if(str[0]=='-')
break;
if(str[1]=='\0')
{
printf("1%s\n",str);
continue;
}
int k=0;
int ans[10000];
for(i=9;i>1;i--)//前面的数一定是大于或等于后面的数 这儿体现贪心
{
while(dir(i)) //这儿的while为等于时判断
ans[k++]=i;
}
if(strlen(str)>1)
{
printf("There is no such number.\n");
continue;
}
for(i=k-1;i>=0;i--)
printf("%d",ans[i]);
printf("\n");
memset(str,'\0',sizeof str);
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator