“天长地久数”是指一个 K 位正整数 A,其满足条件为:A 的各位数字之和为 m,A+1 的各位数字之和为 n,且 m 与 n 的最大公约数是一个大于 2 的素数。本题就请你找出这些天长地久数。
输入格式:
输入在第一行给出正整数 N(≤5),随后 N 行,每行给出一对 K(3<K<10)和 m(1<m<90),其含义如题面所述。
输出格式:
对每一对输入的 K 和 m,首先在一行中输出 Case X
,其中 X
是输出的编号(从 1 开始);然后一行输出对应的 n 和 A,数字间以空格分隔。如果解不唯一,则每组解占一行,按 n 的递增序输出;若仍不唯一,则按 A 的递增序输出。若解不存在,则在一行中输出 No Solution
。
输入样例:
2
6 45
7 80
输出样例:
Case 1
10 189999
10 279999
10 369999
10 459999
10 549999
10 639999
10 729999
10 819999
10 909999
Case 2
No Solution
solution:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned int ui;
ll gcd(ll a,ll b)
{
return b?gcd(b,a%b):a;
}
bool isprime(ll n)
{
if(n<2)return false;
for(int i=2;i<=n/i;i++)
{
if(n%i==0)return false;
}
return true;
}
ll numsum(ll n)
{
ll ans=0;
while(n)
{
ans+=n%10;
n/=10;
}
return ans;
}
int main()
{
ll n;cin>>n;
for(int i=1;i<=n;i++)
{
cout<<"Case "<<i<<endl;
ll k,m;cin>>k>>m;
string minn="1"+string(k-1,'0');
string maxx=string(k,'9');
ll cnt=0;
vector<pair<ll,ll> >ans;
for(ll j=stoll(minn)+99;j<=stoll(maxx);j+=100)
{
if(numsum(j)==m)
{
ll n=numsum(j+1);
if(isprime(gcd(m,n)) && gcd(m,n)>2)
{
cnt++;
ans.push_back({n,j});
}
}
}
if(!cnt)
{
cout<<"No Solution"<<endl;
}
sort(ans.begin(),ans.end(),[](pair<ll,ll>a,pair<ll,ll>b)
{
if(a.first==b.first)return a.second<b.second;
return a.first<b.first;
});
for(auto i:ans)
{
cout<<i.first<<' '<<i.second<<endl;
}
}
}
关于a的最后两位为99,翻了一堆答案总结下防止自己忘记。
倒数第一位如果非9,那么a各位相加k与a+1各位相加k+1相差1。gcd(k,k+1)显然不满足条件
倒数第二位如果非9,那么a各位相加m与a+1各位相加n相差1-9=8,m-8=n;
直观的列出一些数据gcd(n,n+8)
10000 10008 8 10001 10009 1 10002 10010 2 10003 10011 1
10004 10012 4 10005 10013 1 10006 10014 2 10007 10015 1
10008 10016 8 10009 10017 1 10010 10018 2 10011 10019 1
10012 10020 4 10013 10021 1 10014 10022 2 10015 10023 1
10016 10024 8 10017 10025 1 10018 10026 2 10019 10027 1
10020 10028 4 10021 10029 1 10022 10030 2 10023 10031 1
10024 10032 8 10025 10033 1 10026 10034 2 10027 10035 1
10028 10036 4 10029 10037 1 10030 10038 2 10031 10039 1
10032 10040 8 10033 10041 1 10034 10042 2 10035 10043 1
10036 10044 4 10037 10045 1 10038 10046 2 10039 10047 1
10040 10048 8 10041 10049 1 10042 10050 2 10043 10051 1
10044 10052 4 10045 10053 1 10046 10054 2 10047 10055 1
10048 10056 8 10049 10057 1 10050 10058 2 10051 10059 1
10052 10060 4 10053 10061 1 10054 10062 2 10055 10063 1
10056 10064 8 10057 10065 1 10058 10066 2 10059 10067 1
10060 10068 4 10061 10069 1 10062 10070 2 10063 10071 1
10064 10072 8 10065 10073 1 10066 10074 2 10067 10075 1
10068 10076 4 10069 10077 1 10070 10078 2 10071 10079 1
10072 10080 8 10073 10081 1 10074 10082 2 10075 10083 1
10076 10084 4 10077 10085 1 10078 10086 2 10079 10087 1
10080 10088 8 10081 10089 1 10082 10090 2 10083 10091 1
10084 10092 4 10085 10093 1 10086 10094 2 10087 10095 1
10088 10096 8 10089 10097 1 10090 10098 2 10091 10099 1
10092 10100 4 10093 10101 1 10094 10102 2 10095 10103 1
10096 10104 8 10097 10105 1 10098 10106 2 10099 10107 1
10100 10108 4
1 9 1 2 10 2 3 11 1 4 12 4
5 13 1 6 14 2 7 15 1 8 16 8
9 17 1 10 18 2 11 19 1 12 20 4
13 21 1 14 22 2 15 23 1 16 24 8
17 25 1 18 26 2 19 27 1 20 28 4
21 29 1 22 30 2 23 31 1 24 32 8
25 33 1 26 34 2 27 35 1 28 36 4
29 37 1 30 38 2 31 39 1 32 40 8
33 41 1 34 42 2 35 43 1 36 44 4
37 45 1 38 46 2 39 47 1 40 48 8
41 49 1 42 50 2 43 51 1 44 52 4
45 53 1 46 54 2 47 55 1 48 56 8
49 57 1 50 58 2 51 59 1 52 60 4
53 61 1 54 62 2 55 63 1 56 64 8
57 65 1 58 66 2 59 67 1 60 68 4
61 69 1 62 70 2 63 71 1 64 72 8
65 73 1 66 74 2 67 75 1 68 76 4
69 77 1 70 78 2 71 79 1 72 80 8
73 81 1 74 82 2 75 83 1 76 84 4
77 85 1 78 86 2 79 87 1 80 88 8
81 89 1 82 90 2 83 91 1 84 92 4
85 93 1 86 94 2 87 95 1 88 96 8
89 97 1 90 98 2 91 99 1 92 100 4
93 101 1 94 102 2 95 103 1 96 104 8
97 105 1 98 106 2 99 107 1 100 108 4
1000 1008 8 1001 1009 1 1002 1010 2 1003 1011 1
1004 1012 4 1005 1013 1 1006 1014 2 1007 1015 1
1008 1016 8 1009 1017 1 1010 1018 2 1011 1019 1
1012 1020 4 1013 1021 1 1014 1022 2 1015 1023 1
1016 1024 8 1017 1025 1 1018 1026 2 1019 1027 1
1020 1028 4 1021 1029 1 1022 1030 2 1023 1031 1
1024 1032 8 1025 1033 1 1026 1034 2 1027 1035 1
1028 1036 4 1029 1037 1 1030 1038 2 1031 1039 1
1032 1040 8 1033 1041 1 1034 1042 2 1035 1043 1
1036 1044 4 1037 1045 1 1038 1046 2 1039 1047 1
1040 1048 8 1041 1049 1 1042 1050 2 1043 1051 1
1044 1052 4 1045 1053 1 1046 1054 2 1047 1055 1
1048 1056 8 1049 1057 1 1050 1058 2 1051 1059 1
1052 1060 4 1053 1061 1 1054 1062 2 1055 1063 1
1056 1064 8 1057 1065 1 1058 1066 2 1059 1067 1
1060 1068 4 1061 1069 1 1062 1070 2 1063 1071 1
1064 1072 8 1065 1073 1 1066 1074 2 1067 1075 1
1068 1076 4 1069 1077 1 1070 1078 2 1071 1079 1
1072 1080 8 1073 1081 1 1074 1082 2 1075 1083 1
1076 1084 4 1077 1085 1 1078 1086 2 1079 1087 1
1080 1088 8 1081 1089 1 1082 1090 2 1083 1091 1
1084 1092 4 1085 1093 1 1086 1094 2 1087 1095 1
1088 1096 8 1089 1097 1 1090 1098 2 1091 1099 1
1092 1100 4 1093 1101 1 1094 1102 2 1095 1103 1
1096 1104 8 1097 1105 1 1098 1106 2 1099 1107 1
1100 1108 4
由观察所得,gcd(n,n+8)为1、2、4、8,(数学归纳法忘了)
不满足isprime(gcd(m,n)) && gcd(m,n)>2
所以倒数第二位必为9