A 水题:
#include<bits/stdc++.h>
using namespace std;
int main(){
double r;
cin>>r;
printf("%.2lf",2*r*3.1415926);
return 0;
}
B 水题
#include<bits/stdc++.h>
#define maxn 10004
using namespace std;
typedef long long ll;
ll a[maxn];
int main(){
ll n,m;
cin>>n>>m;
ll sum =0;
for(ll i=0;i<m;i++){
cin>>a[i];
sum += a[i];
}
if(sum > n) cout<<"-1"<<endl;
else{
cout<<n-sum<<endl;
}
return 0;
}
C 水题:
#include<bits/stdc++.h>
#define maxn 200004
using namespace std;
typedef long long ll;
ll a[maxn];
ll b[maxn];
int main(){
ll n;
cin>>n;
for(int i=2;i<=n;i++){
cin>>a[i];
b[a[i]]++;
}
for(int i=1;i<=n;i++){
cout<<b[i]<<endl;
}
return 0;
}
D 思路:规律+同余
规律如下:
样例来说,把10的100次方看成0,那么就变成 0 1 2 3 ;
区间长度为2的区间和的范围是:0+1=1, 2+3=5;也就是1~5;
区间长度为3的区间和的范围是: 0+1+2=3, 1+2+3=6; 也就是3~6;
区间长度为4的区间和的范围是: 6 ~ 6 ;
所有范围内的数加起来就是10个;
所以对于每一个区间长度,都求出来范围的下界和上界即可;注意中间求和的过程中要用上界减去下界,此时要先减再mod;
说下我自己容易出错的地方(大佬自动跳过):当题目要求结果mod上一个数时,通常计算过程中要处处取模,否则会有隐患,但是如果计算中间出现了两个大数相减,比如算出来两个大数 a b(a<b);如果用b%mod-a%mod,数据大一点就gg了;正确的应该先减后mod;(b-a+mod)%mod;
#include <bits/stdc++.h>
using namespace std;
const int mod=1e9+7;
typedef long long ll;
int main()
{
ll n,k;
cin >>n>>k;
ll ans=0;
while(k<=n)
{
ll res=(k*(n-k+1+n)/2-k*(k-1)/2+1+mod)%mod;
ans=(ans+res)%mod;
k++;
}
ans++;
cout <<ans%mod<<endl;
}