2023/12/02
1.数的输入和输出
输入一个整数和双精度浮点数,先将浮点数保留2位小数输出,然后输出整数。
时间限制:1000
内存限制:65536
输入
一行两个数,分别为整数N(不超过整型范围),双精度浮点数F,以一个空格分开。
输出
一行两个数,分别为保留2位小数输出的F,以及整数N,以一个空格分开。
样例输入
100 123.456789
样例输出
123.46 100
#include<iostream>
#include <iomanip>
using namespace std;
int main(){
int N;
double F;
cin>>N>>F;
cout<<fixed<<setprecision(2)<<F<<" "<<N;
return 0;
}
2.计算分数的浮点数值
两个整数a和b分别作为分子和分母,既分数 a/b ,求它的浮点数值(双精度浮点数,保留小数点后9位)
时间限制:1000
内存限制:65536
输入
输入仅一行,包括两个整数a和b(b不为0)
输出
输出也仅一行,分数 a/b 的浮点数值(双精度浮点数,保留小数点后9位)
样例输入
5 7
样例输出
0.714285714
#include <stdio.h>
int main(){
int a, b;
scanf("%d %d", &a, &b);
printf("%0.9f", (double)a / b);
return 0;
}
3.数字判断
输入一个字符,如果输入的字符是数字,输出yes, 否则输出no
时间限制:1000
内存限制:65536
输入
一个字符
输出
如果输入的字符是数字,输出yes, 否则输出no
样例输入
样例1输入:
5
样例2输入:
A
样例输出
样例1输出:
yes
样例2输出:
no
#include<iostream>
using namespace std;
int main()
{
char a;
cin>>a;
if(a>=48&&a<=57)
{
cout<<"yes";
}
else
{
cout<<"no";
}
return 0;
}
4.统计数
给定一个数的序列S,以及一个区间[L, R], 求序列中介于该区间的数的个数,即序列中大于等于L且小于等于R的数的个数。
时间限制:1000
内存限制:65536
输入
第一行3个整数n、L、R,分别表示序列的长度,区间的左端点,区间的右端点。(0 < n ≤ 10000, 1 ≤ L ≤ R ≤ 1000000) 第二行n个正整数,表示序列里的每一个数,每个数小于等于10000000
输出
输出一个整数,表示序列中大于等于L且小于等于R的数的个数。
样例输入
5 1 10
11 8 1 10 16
样例输出
3
#include<iostream>
using namespace std;
int main()
{
int n,l,r,k,count = 0;
cin >>n>>l>>r;
for(int i=0;i<n;i++)
{
cin>>k;
if(k>=l&&k<=r)
{
count++;
}
}
cout<<count<<endl;
return 0;
}
5.硬币翻转
假设有N个硬币(N为不大于5000的正整数),从1到N按顺序依次编号,初始时全部处于正面向上的状态;有M个人(M为不大于N的正整数)也从1到M依次编号。
第一个人(1号)将硬币全部翻转一次,第二个人(2号)将编号为2的倍数的硬币翻转一次,第三个人(3号)将编号为3的倍数的硬币翻转一次。依照编号递增顺序,以后的人都和3号一样,将凡是自己编号倍数的硬币翻转一次。
请问:当第M个人操作之后,哪些硬币是正面向上的,按从小到大输出其编号,以空格分开。
时间限制:10000
内存限制:65536
输入
输入正整数N和M,以单个空格隔开。
输出
顺次输出正面向上的硬币的编号,其间用空格间隔。
样例输入
10 10
样例输出
2 3 5 6 7 8 10
#include<iostream>
using namespace std;
int a[5000];
int main()
{
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++)
{
a[i] = 1;
}
for(int i=1;i<=m;i++)//i表示人
{
for(int j=i;j<=n;j++)//j表示硬币
{
if(j%i == 0)
{
a[j] = !a[j];
}
}
}
//输出符合要求的
for(int i=1;i<=n;i++)
{
if(a[i] == 1)
{
cout<<i<<" ";
}
}
return 0;
}