某学校教职工人数不足n人,在操场排队,7个一排剩5人,5个一排剩3人,3个一排剩2人;请问该校人数有多少种可能?最多可能有几人?
输入格式:
测试数据有多组,处理到文件尾。每组测试输入一个整数n(1≤n≤10000)。
输出格式:
对于每组测试,输出一行,包含2个以一个空格间隔的整数,分别表示该校教职工人数的可能种数和最多可能的人数。
输入样例:
1000
输出样例:
9 908
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
思路分析:
本题主要考查选择语句和动态数组的引用,
通过数组的下标统计次数,是因为每当i符合条件,下标cnt++。同时把i赋给数组的子项。
注意:先cnt++,再赋值,因为要最大值,即需要输出a[cnt],如果先赋值,再cnt++,
就会导致a[cnt]其实是最大值所在子项的后一项。即输出的是a[cnt++]。
由于到n之前就截至了,所以a[cnt]为最大值,后面子项未赋值,值为0。
代码实现:
#include<iostream>
using namespace std;
int main(){
int n;
int a[100];
while(cin>>n){
int cnt=0;
for(int i=12;i<n;i++){
if(i%7==5&&i%5==3&&i%3==2){
cnt++;
a[cnt]=i;
}
}
cout<<cnt<<" "<<a[cnt]<<endl;
}
return 0;
} /*先cnt++,再赋值,因为要最大值,即需要输出a[cnt],如果先赋值,再cnt++,
就会导致a[cnt]其实是最大值所在子项的后一项。即输出的是a[cnt++]。
由于到n之前就截至了,所以a[cnt]为最大值,后面子项未赋值,值为0。*/
运行结果: