[语言月赛 202312] NK
题目描述
给定两个正整数 \(N, K\),请你统计符合以下条件的正整数 \(x\) 的数量:
- \(1 \leq x \leq N ^ N\)。
- \((x \bmod K)\) 是 \(N\) 的倍数。
- \(x\) 的个位是 \(N\)。
\(x \bmod K\) 代表 \(x\) 除以 \(K\) 的余数,例如 \(7 \bmod 3 = 1\)。
输入格式
输入一行两个整数 \(N, K\)。
输出格式
输出一行一个整数,代表符合题干中所有条件的 \(x\) 的数量。
样例 #1
样例输入 #1
4 6
样例输出 #1
17
样例 #2
样例输入 #2
7 6
样例输出 #2
0
提示
数据规模与约定
- 对于 \(30\%\) 的数据,\(1 \leq N, K \leq 6\)。
- 对于 \(100\%\) 的数据,\(1 \leq N \leq 9\),\(1 \leq K \leq 10 ^ 6\)。
思路:
一开始仅仅只得了三十分,原因竟然是不能普通的模拟,事实上我们不用考虑1-pow(n,n)所有的数,只需要考虑,所有结尾是n的数字就可以了,也就是我们可以做一个i * 10+n这样就保证了数字最后一定是n
代码:
#include<bits/stdc++.h>
using namespace std;
void solve(){
int n,k;
cin>>n>>k;
int x=1;
for(int i=1;i<=n;i++){
x*=n;
}
x/=10;
// for(int i=1;i<=)
int ans=0;
for(int i=0;i<=x;i++){
int y=(i*10+n);
if((y%k)%n==0){
ans++;
}
}
cout<<ans<<endl;
return ;
}
int main(){
int t=1;
while(t--){
solve();
}
return 0;
}
标签:月赛,NK,int,202312,bmod,样例,leq
From: https://www.cnblogs.com/du463/p/17901436.html