12 条题解
-
3
按照思路枚举模拟即可。#5竟然给我过了。
#include <bits/stdc++.h> #define min(a, b) (a<b ? a : b) #define max(a, b) (a>b ? a : b) using namespace std; int n; bool isPrime(int x){ // 简单的判断质数,新手必会 for (int i=2; i*i<=x; i++) if (x%i==0) return false; return true; } void print(int a){ for (int i=3; i<=a-2; i+=2){ // 特判2的情况 if (isPrime(i) && i==a-2){ cout<<a<<" = 2 + "<<i<<endl; return; } } for (int i=3; i<=a-3; i+=2){ // 一般情况 if (isPrime(i) && isPrime(a-i)){ cout<<a<<" = "<<min(a-i, i)<<" + "<<max(a-i, i)<<endl; return; } } } int main(){ while (cin>>n && n/*这一步是为了结束输入,完整写法为n!=0*/) print(n); return 0; }
信息
- ID
- 197
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 2
- 标签
- 递交数
- 567
- 已通过
- 213
- 上传者