1011B A+B 和 C
https://pintia.cn/problem-sets/994805260223102976/problems/994805312417021952
#include<iostream>
#include<cstdio>
using namespace std;
int main(){
int time;
cin>>time;
long long a,b,c;
for(int i =0;i<time;i++){
scanf("%lld%lld%lld",&a,&b,&c);
if(a+b>c){
printf("Case #%d: true\n",i+1);
}
else
printf("Case #%d: false\n",i+1);
}
return 0;
}
1016B 部分A+B (15 分)
https://pintia.cn/problem-sets/994805260223102976/problems/994805306310115328
#include<cstdio>
#include<iostream>
using namespace std;
int main(){
long long a,da,b,db;
scanf("%lld%lld%lld%lld",&a,&da,&b,&db);
long long pa=0,pb=0;
while(a!=0){
if(a%10 == da)
pa = pa*10+da;
a = a/10;
}
while(b!=0){
if(b%10 == db)
pb = pb*10+db;
b = b/10;
}
printf("%lld",pa+pb);
return 0;
}
1026B 程序运行时间 (15 分)
https://pintia.cn/problem-sets/994805260223102976/problems/994805295203598336
#include<cstdio>
#include<iostream>
using namespace std;
int main(){
int c1,c2;
cin>>c1>>c2;
int c = (c2-c1)/100;
if(c%100>50)
c = c+1;
printf("%02d:%02d:%02d\n",c/3600,c%3600/60,c%60);
return 0;
}
B1046 划拳 (15 分)
https://pintia.cn/problem-sets/994805260223102976/problems/994805277847568384
#include<cstdio>
#include<iostream>
using namespace std;
int main(){
int a,ha,b,hb;
int cnt;
cin>>cnt;
int pa=0,pb=0;
while(cnt--){
cin>>a>>ha>>b>>hb;
if(ha == a+b&&ha !=hb){
pb=pb+1;
}
if(hb == a+b&&ha !=hb)
pa=pa+1;
}
cout<<pa<<" "<<pb;
return 0;
}
1008 数组元素循环右移问题 (20 分)
https://pintia.cn/problem-sets/994805260223102976/problems/994805316250615808
部分错误。17分
#include<cstdio>
#include<iostream>
using namespace std;
int main(){
int n,m;
cin>>n>>m;
m = m%n;
int num[110]={0};
for(int i =0;i<n;i++){
cin>>num[i];
}
if(n ==1){
cout<<num[0]<<endl;
}
else if(m ==0){
cout<<num[0];
for(int i =1;i<m;i++){
cout<<" "<<num[i];
}
}
else{
cout<<num[n-m];
for(int i = n-m+1;i<n;i++){
cout<<" "<<num[i];
}
for(int i =0;i<n-m;i++){
cout<<" "<<num[i];
}
}
return 0;
}
在这里插入代码片
1012B
https://pintia.cn/problem-sets/994805260223102976/problems/994805311146147840
19分,一个答案错误
#include<cstdio>
#include<iostream>
using namespace std;
int main(){
int n;
cin>>n;
int num[1010]={0};
for(int i=0;i<n;i++){
cin>>num[i];
}
int cnt[5]={0};
int tag=1;
int count=0;
for(int i =0;i<n;i++){
if(num[i]%5==0&&num[i]%2==0){
cnt[0] = cnt[0]+num[i];
}
if(num[i]%5 == 1){
cnt[1]=cnt[1]+tag*num[i];
tag = tag*(-1);
}
if(num[i]%5==2){
cnt[2]++;
}
if(num[i]%5==3){
cnt[3]=cnt[3]+num[i];
count=count+1;
}
if(num[i]%5==4){
if(cnt[4]<num[i]){
cnt[4]=num[i];
}
}
}
if(cnt[0]==0) printf("N ");
else printf("%d ",cnt[0]);
if(cnt[1]==0) printf("N ");
else printf("%d ",cnt[1]);
if(cnt[2]==0) printf("N ");
else printf("%d ",cnt[2]);
if(cnt[3]==0) printf("N ");
else printf("%.1f ",(double)cnt[3]/count);
if(cnt[4]==0) printf("N ");
else printf("%d ",cnt[4]);
return 0;
}
修改,存在只有一个数字为0的情况时,无法分别
#include<cstdio>
#include<iostream>
using namespace std;
int main(){
int n;
cin>>n;
int num[1010]={0};
for(int i=0;i<n;i++){
cin>>num[i];
}
int cnt[5]={0};
int tag=1;
int count[5]={0};
for(int i =0;i<n;i++){
if(num[i]%5==0&&num[i]%2==0){
cnt[0] = cnt[0]+num[i];
count[0]++;
}
if(num[i]%5 == 1){
cnt[1]=cnt[1]+tag*num[i];
tag = tag*(-1);
count[1]++;
}
if(num[i]%5==2){
cnt[2]++;
count[2]++;
}
if(num[i]%5==3){
cnt[3]=cnt[3]+num[i];
count[3]++;
}
if(num[i]%5==4){
if(cnt[4]<num[i]){
cnt[4]=num[i];
count[4]++;
}
}
}
if(count[0]==0) printf("N ");
else printf("%d ",cnt[0]);
if(count[1]==0) printf("N ");
else printf("%d ",cnt[1]);
if(count[2]==0) printf("N ");
else printf("%d ",cnt[2]);
if(count[3]==0) printf("N ");
else printf("%.1f ",(double)cnt[3]/count[3]);
if(count[4]==0) printf("N");
else printf("%d",cnt[4]);
return 0;
}
1018B
https://pintia.cn/problem-sets/994805260223102976/problems/994805304020025344
#include<cstdio>
#include<iostream>
using namespace std;
int change(char c){
if(c=='B')
return 0;
else if(c=='C')
return 1;
else return 2;
}
int main(){
int n;
cin>>n;
char mp[3]={'B','C','J'};
//胜中负次数
int t1[3]={0},t2[3]={0};
//出拳内容胜的次数
int h1[3]={0},h2[3]={0};
int a,b;
char c1,c2;
for(int i =0;i<n;i++){
cin>>c1>>c2;
a = change(c1);
b = change(c2);
h1[a]++;
h2[b]++;
if((a+1)%3==b){
t1[0]++;
t2[2]++;
h1[a]++;
}
else if((b+1)%3==a){
t1[2]++;
t2[0]++;
h2[b]++;
}
else{
t1[1]++;
t2[1]++;
}
}
printf("%d %d %d\n",t1[0],t1[1],t1[2]);
printf("%d %d %d\n",t2[0],t2[1],t2[2]);
int id1=0,id2=0;
for(int i =0;i<3;i++){
if(h1[i]>h1[id1]) id1=i;
if(h2[i]>h2[id2]) id2=i;
}
printf("%c %c\n",mp[id1],mp[id2]);
return 0;
}
1042A Shuffling Machine (20 分)
https://pintia.cn/problem-sets/994805342720868352/problems/994805442671132672
答案错误,报错,主要原因,输出数字用start[i]%13,导致应该显示为13的位置显示0
#include<cstdio>
#include<iostream>
using namespace std;
const int N=54;
char mp[5]={'S','H','C','D','J'};
int start[N+1]={0},next[N+1]={0},end[N+1]={0};
int main(){
int n;
cin>>n;
//初始化
for(int i =1;i<=54;i++){
start[i]=i;
}
//输入每个位置上的牌操作后的位置
for(int i =1;i<=N;i++){
cin>>next[i];
}
//进行洗牌
for(int i =0;i<n;i++){
for(int j = 1;j<=N;j++){
end[next[j]] = start[j];
}
for(int j =1;j<=N;j++){
start[j]=end[j];
}
}
for(int i=1;i<=N;i++){
if(i!=1) cout<<" ";
printf("%c%d",mp[(start[i]-1)/13],start[i]%13);
}
return 0;
}
printf("%c%d",mp[(start[i]-1)/13],start[i]%13);改为在输出之前start[i]–printf("%c%d",mp[start[i]/13],start[i]%13+1);
#include<cstdio>
#include<iostream>
using namespace std;
const int N=54;
int main(){
int n;
char mp[5]={'S','H','C','D','J'};
int start[N+1]={0},next[N+1]={0},end[N+1]={0};
cin>>n;
//初始化
for(int i =1;i<=54;i++){
start[i]=i;
}
//输入每个位置上的牌操作后的位置
for(int i =1;i<=N;i++){
cin>>next[i];
}
//进行洗牌
for(int i =0;i<n;i++){
for(int j = 1;j<=N;j++){
end[next[j]] = start[j];
}
for(int j =1;j<=N;j++){
start[j]=end[j];
}
}
for(int i=1;i<=N;i++){
if(i!=1) cout<<" ";
start[i]--;
printf("%c%d",mp[start[i]/13],start[i]%13+1);
}
return 0;
}
1046A Shortest Distance (20 分)
https://pintia.cn/problem-sets/994805342720868352/problems/994805435700199424
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int main(){
int n;
cin>>n;
int dis[10010]={0};
int sum=0;
for(int i=1;i<=n;i++){
int a;
cin>>a;
sum = sum+a;
dis[i]=sum;
}
int j=0;
cin>>j;
for(int i=0;i<j;i++){
int a,b;
cin>>a>>b;
if(a>b) swap(a,b);
int temp=dis[b-1]-dis[a-1];
printf("%d\n",min(temp,sum-temp));
}
return 0;
}
1065A A+B and C (64bit) (20 分)
https://pintia.cn/problem-sets/994805342720868352/problems/994805406352654336
尝试用大整数解决,内容太麻烦
解决思路:
a>max,b>max,a+b<0,所以a+b>c
a<0,b<0,a+b>=0,所以a+b<c
#include<cstdio>
#include<iostream>
using namespace std;
int main(){
int t;
cin>>t;
int i=1;
while(t--){
long long a,b,c;
cin>>a>>b>>c;
if(a<0&&b<0&&(a+b)>=0){
printf("Case #%d: false\n",i++);
continue;
}
else if(a>0&&b>0&&(a+b)<0){
printf("Case #%d: true\n",i++);
continue;
}
else if((a+b)>c){
printf("Case #%d: true\n",i++);
continue;
}
else {
printf("Case #%d: false\n",i++);
continue;
}
}
return 0;
}
1010B 一元多项式求导 (25 分)
https://pintia.cn/problem-sets/994805260223102976/problems/994805313708867584
#include<cstdio>
#include<iostream>
using namespace std;
int main(){
int a,b;
cin>>a>>b;
if(b == 0){
cout<<"0 0";
return 0;
}
else{
cout<<a*b<<" "<<b-1;
}
while(cin>>a>>b){
if(b!=0){
cout<<" "<<a*b<<" "<<b-1;
}
}
return 0;
}
1002A A+B for Polynomials (25 分)
https://pintia.cn/problem-sets/994805342720868352/problems/994805526272000000
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
struct User{
char id[16];
int in_time[3];
int out_time[3];
}user[1010];
bool cmp(User u1,User u2){
if (u1.in_time[0]!=u2.in_time[0]) return u1.in_time[0]<u2.in_time[0];
else if (u1.in_time[1]!=u2.in_time[1]) return u1.in_time[1]<u2.in_time[1];
else return u1.in_time[2]<u2.in_time[2];
}
bool cmp1(User u1,User u2){
if (u1.out_time[0]!=u2.out_time[0]) return u1.out_time[0]>u2.out_time[0];
else if (u1.out_time[1]!=u2.out_time[1]) return u1.out_time[1]>u2.out_time[1];
else return u1.out_time[2]>u2.out_time[2];
}
int main(){
int m;
cin>>m;
for(int i=0;i<m;i++){
scanf("%s %d:%d:%d %d:%d:%d",&user[i].id,&user[i].in_time[0],&user[i].in_time[1],&user[i].in_time[2],&user[i].out_time[0],&user[i].out_time[1],&user[i].out_time[2]);
}
sort(user,user+m,cmp);
cout<<user[0].id<<" ";
sort(user,user+m,cmp1);
cout<<user[0].id;
return 0;
}
1009A Product of Polynomials (25 分)
https://pintia.cn/problem-sets/994805342720868352/problems/994805509540921344
#include<iostream>
#include<cstdio>
using namespace std;
int main(){
double a[1020]={0.0},b[1020]={0.0},temp[2020]={0.0};
int ka,kb;
cin>>ka;
for(int i = 0;i<ka;i++){
int nk;
double n;
cin>>nk>>n;
a[nk]=n;
}
cin>>kb;
for(int i = 0;i<kb;i++){
int nk;
double n;
cin>>nk>>n;
b[nk]=n;
}
for(int i=0;i<=1000;i++){
for(int j=0;j<=1000;j++){
temp[i+j]+=a[i]*b[j];
}
}
int count = 0;
for(int i=0;i<=2000;i++)
if(temp[i]!=0.0)
count++;
cout<<count;
for(int i = 2000;i>=0;i--)
if(temp[i]!=0.0){
printf(" %d %.1lf",i,temp[i]);
}
return 0;
}