九度 oj 1125

来源:互联网 发布:h3c stp 阻塞端口 编辑:程序博客网 时间:2024/06/08 02:37
题目1125:大整数的因子

时间限制:1 秒

内存限制:32 兆

特殊判题:

提交:940

解决:475

题目描述:

已知正整数k满足2<=k<=9,现给出长度最大为30位的十进制非负整数c,求所有能整除c的k.

输入:

若干个非负整数c,c的位数<=30
每行一个c,当c=-1时中止
(不要对-1进行计算!)

输出:

每一个c的结果占一行
1) 若存在满足 c%k == 0 的k,输出所有这样的k,中间用空格隔开,最后一个k后面没有空格。
2) 若没有这样的k则输出"none"

样例输入:
307213-1
样例输出:
2 3 5 62 3 4 6 8 9none
提示:

注意整数溢出问题
不要对-1进行计算

来源:

2008年北京大学方正实验室计算机研究生机试真题

#include<iostream>#include<stdio.h>#include<string.h>using namespace std;int main(){    char a[31];    int b[31];    int t=0;    int c[31];        while(cin>>a)    {                 if(strcmp(a,"-1")==0)                 {                                   break;                                   }                 int len=strlen(a);                 t=0;                                         int i,j;                 for( i=2;i<=9;i++)                 {                        for(int i=0;i<len;i++)                 {                         b[i]=a[i]-'0';                         }                         for(j=0;j<len-1;j++)                          {                                 b[j+1]+=b[j]%i*10;                                 b[j]=b[j]/i;                                 }                                 if(b[j]%i==0)                                 {                                              c[t++]=i;                                              }                                              }                                              if(t==0)                                              {                                                      cout<<"none"<<endl;                                                      }                                                      else                                                      {                                                          int k;                                                          for(k=0;k<t-1;k++)                                                          {                                                                  cout<<c[k]<<" ";                                                                  }                                                                  cout<<c[k]<<endl;                                                                  }                                                                  memset(a,'\0',sizeof(a));                                                                  }                                                                  } 


#include <stdio.h>#include <string.h>int main(){        char a[31];        int b[30],c[9],i,j,k,sum,len;        while(scanf("%s",a)!=EOF)        {                if(a[0]=='-')                    break;                len=strlen(a);                for(i=0;i<len;i++)                    b[i]=a[i]-'0';                k=0;                for(i=2;i<10;i++)                {                        sum=0;                    for(j=0;j<len;j++)                    {                            sum=sum*10+b[j];                            sum=sum%i;                    }                    if(sum==0)                    {                        c[k]=i;                        k++;                    }                }                if(k==0)                    printf("none\n");                else                {                    for(i=0;i<k-1;i++)                        printf("%d ",c[i]);                    printf("%d\n",c[k-1]);                }        }        return 0;}



0 0
原创粉丝点击