测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A24194. 大整数的因子

填空题 困难

题目描述

大整数的因子

题目描述

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

输入

一个非负整数c,c的位数≤30。

输出

若存在满足 c%k == 0 的k,从小到大输出所有这样的k,相邻两个数之间用单个空格隔开;若没有这样的k,则输出"none"。

输入样例

30

输出样例

2 3 5 6

参考答案

int main() { int k, c; cin >> c; bool hasK = false; for(int k = 2; k <= 9; ++k) { if(c % k == 0) { cout << k << ' '; hasK = true; } } if(hasK == false) cout << "none"; return 0; }

答案解析

#include<bits/stdc++.h>

using namespace std;

#define N 35

//将字符数组转化为数字数组 数字数组从第1位置到第len位置,从低位到高位保存各位数字,第0位置保存数字位数

void toNum(char s[], int a[])

{

   a[0] = strlen(s);

   for(int i = 1; i <= a[0]; ++i)

       a[i] = s[a[0] - i] - '0';

}

//高精模低精

int Mod(int a[], int b)

{

   int x = 0;

   for(int i = a[0]; i >= 1; --i)

       x = (x * 10 + a[i]) % b;

   return x;

}

int main()

{

   int n, k, c[N] = {};

   char s[N];

   bool hasK = false;

   cin >> s;

   toNum(s, c);

   for(k = 2; k <= 9; ++k)

   {

       if(Mod(c, k) == 0)

       {

           cout << k << ' ';

           hasK = true;

       }

   }

   if(hasK == false)

       cout << "none";

   return 0;

}

上一题 下一题