单点时限: 2.0 sec
内存限制: 256 MB
求解在某个范围内能被 3 整除的自然数的个数。
例如:长度为 2、个位数为 8 且能被 3 整除的数有 3 个,即 18、48、78;长度为 1、个位数为 3 且能被 3 整除的数只有 1 个,即 3。
输入格式
第 1 行:整数 T (1≤T≤10) 为问题数
第 2 ∽T+1 行:每行是两个以空格隔开的整数 C 和 W, C (2≤C≤6) 为自然数的长度、W (1≤W≤9) 为自然数的尾数。
输出格式
对于每个问题,输出一行问题的编号(0 开始编号,格式:case #0:
等),然后在一行中输出长度为 C、尾数为 W 并且能被 3 整除的自然数的个数。
样例
input
2 2 8 3 1
output
case #0: 3 case #1: 30
#include <iostream>
#include <bits/stdc++.h>
#include <math.h>
using namespace std;
int main() {
int jobs, temp, c, w;
vector<int> inputs[10];
// 输入
cin >> jobs;
for(int i=0;i<jobs;i++){
cin >> c >> w;
inputs[i].insert(inputs[i].end(), c);
inputs[i].insert(inputs[i].end(), w);
}
// 格式化与输出
int count=0;
int min,max;
for(int i=0;i<jobs;i++){
cout << "case #" << i << ":" << endl;
min = pow(10, inputs[i][0]-1);
max = pow(10, inputs[i][0])-1;
for(int j=min;j<=max;j++){
if(j%3==0 && j%10==inputs[i][1]){
count++;
}
}
cout << count << endl;
count=0;
}
return 0;
}
ps:暴力解。以输入参数c=3,w=9为例,例程会在【10^3~10^4-1 这个区间】中寻找【尾巴是9且能被3整数】的结果。
应该用一个class定义每次的输入的c和w参数的,那样的话代码可读性会比这个vector类型变量的数组更好~