关注
第一题:
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <algorithm>
#include <string>
#include <map>
#include <vector>
#include <set>
#include <climits>
#include <ctime>
#include <cassert>
#define IOS ios_base::sync_with_stdio(0); cin.tie(0);
using namespace std;
typedef long long ll;
#define mp make_pair
#define fi first
#define se second
#define pb push_back
const double pi = acos(-1.0);
const int inf = 0x3f3f3f3f;
const ll INF = 0x3f3f3f3f3f3f3f3fll;
const int MAX_N = 1001000;
int prime_cnt;
int vis[MAX_N], prime[MAX_N];
void Sieve() {
memset(vis, 0, sizeof (vis));
prime_cnt = 0;
for (int i = 2; i < MAX_N; ++i) {
if (!vis[i]) prime[prime_cnt++] = i;
for (int j = 0; j < prime_cnt && 1ll * i * prime[j] < MAX_N; ++j) {
vis[i * prime[j]] = 1;
if (i % prime[j] == 0) break;
}
}
}
ll n;
bool isPrime(ll x) {
for (int i = 2; 1ll * i * i <= x; ++i) {
if (x % i == 0) return false;
}
return true;
}
int main() {
Sieve();
while (~scanf("%lld", &n)) {
if (n > 10000) {
ll q = (ll)sqrt(n + 0.5);
if (isPrime(q) && q * q == n) {
printf("%lld %d\n", q, 2);
continue;
} else if (isPrime(q + 1) && (q + 1) * (q + 1) == n) {
printf("%lld %d\n", q + 1, 2);
continue;
} else if (isPrime(q - 1) && (q - 1) * (q - 1) == n) {
printf("%lld %d\n", q - 1, 2);
continue;
}
}
int exp = 0, flag = 0;
ll x = n, ret = 1;
for (int i = 0; i < prime_cnt; ++i) {
if (x % prime[i] == 0) {
int cnt = 0;
while (x % prime[i] == 0) cnt++, x /= prime[i];
ret = prime[i];
if (x == 1 && cnt > 1) exp = cnt, flag = 1;
break;
}
}
if (flag) printf("%lld %d\n", ret, exp);
else printf("No\n");
}
return 0;
}
第二题:
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <algorithm>
#include <string>
#include <map>
#include <vector>
#include <set>
#include <climits>
#include <ctime>
#include <cassert>
#define IOS ios_base::sync_with_stdio(0); cin.tie(0);
using namespace std;
typedef long long ll;
#define mp make_pair
#define fi first
#define se second
#define pb push_back
const double pi = acos(-1.0);
const int inf = 0x3f3f3f3f;
const ll INF = 0x3f3f3f3f3f3f3f3fll;
const int MAX_N = 10010;
int main() {
int n, L;
while (~scanf("%d%d", &n, &L)) {
int find = 0, st = -1, len = 0;
for (int i = L - 1; i <= 100; ++i) {
if (2 * n % (i + 1)) continue;
int p = 2 * n / (i + 1) - i;
if (p < 0 || (p % 2)) continue;
st = p / 2, len = i + 1, find = 1;
break;
}
if (find == 0) puts("No");
else {
for (int i = 0; i < len; ++i) {
printf("%d", i + st);
if (i < len - 1) printf(" ");
else printf("\n");
}
}
}
return 0;
}
第三题:
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <algorithm>
#include <string>
#include <map>
#include <vector>
#include <set>
#include <climits>
#include <ctime>
#include <cassert>
#define IOS ios_base::sync_with_stdio(0); cin.tie(0);
using namespace std;
typedef long long ll;
#define mp make_pair
#define fi first
#define se second
#define pb push_back
const double pi = acos(-1.0);
const int inf = 0x3f3f3f3f;
const ll INF = 0x3f3f3f3f3f3f3f3fll;
const int MAX_N = 10010;
int n;
ll num[15], pw[15];
int main() {
pw[0] = 1;
for (int i = 1; i < 15; ++i) pw[i] = pw[i - 1] * 10;
while (~scanf("%d", &n)) {
int digit[15], len = 0, x = n;
while (x) {
digit[len++] = x % 10;
x /= 10;
}
memset(num, 0, sizeof (num));
for (int i = 1; i < digit[len - 1]; ++i) num[i] += pw[len - 1];
num[digit[len - 1]] += (n % pw[len - 1] + 1);
for (int i = len - 2; i >= 1; --i) {
int former = n % pw[i + 1], latter = n / pw[i];
for (int j = digit[i] + 1; j < 10; ++j) num[j] += 1ll * former * pw[i];
num[digit[i]] += 1ll * former * pw[i];
if (digit[i] > 0) num[digit[i]] += latter + 1;
for (int j = 1; j < digit[i]; ++j) num[j] += pw[i] * (former + 1);
if (digit[i] > 0) num[0] += 1ll * former * pw[i];
}
if (n > 9) {
ll former = n / pw[1];
int k = digit[0];
for (int i = k + 1; i < 10; ++i) num[i] += former;
for (int i = 0; i <= k; ++i) num[i] += (former + 1);
}
num[0] -= 1;
for (int i = 0; i < 10; ++i) {
printf("%lld", num[i]);
if (i < 9) putchar(' ');
else putchar('\n');
}
}
return 0;
}
查看原帖
点赞 1
相关推荐
点赞 评论 收藏
分享
03-08 21:48
哈尔滨理工大学 游戏后端 点赞 评论 收藏
分享
查看6道真题和解析 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# Agent面试会问什么? #
18699次浏览 641人参与
# 哪些公司一直卡在简历筛选 #
98524次浏览 295人参与
# 厦门银行科技岗值不值得投 #
18109次浏览 419人参与
# 给工作过的公司写一条大众点评,你会怎么写? #
6205次浏览 99人参与
# 一人分享一个skill #
4714次浏览 134人参与
# 烂工作和没工作哪个更痛苦? #
14696次浏览 234人参与
# 拼多多工作体验 #
54691次浏览 366人参与
# 春招至今,你收到几个面试了? #
54013次浏览 762人参与
# 我们是不是被“优绩主义”绑架了? #
43614次浏览 536人参与
# 运营每日一题 #
134082次浏览 925人参与
# 面试体验最好和最差的公司 #
17253次浏览 100人参与
# 央国企投递记录 #
186827次浏览 1709人参与
# 你觉得专业和学校哪个对薪资影响最大 #
103777次浏览 613人参与
# AI替代不了什么? #
9740次浏览 137人参与
# 我是XXX,请攻击我最薄弱的地方 #
71551次浏览 469人参与
# 你收到了团子的OC了吗 #
1582576次浏览 11849人参与
# 现在入门AI首先要做什么? #
3227次浏览 80人参与
# 面试尴尬现场 #
223911次浏览 868人参与
# 机械人面试中的常问题 #
266584次浏览 3686人参与
# 学历VS实习,哪个更重要? #
24986次浏览 323人参与
# 实习心态崩了 #
113267次浏览 615人参与
