比赛地址
A 约瑟夫环
#include<iostream>
using namespace std;
int main()
{
int n,m;
while(cin>>n>>m,n!=0){
int s=0;
for (int i = 2; i <= n; i++)s = (s + m) % i;
cout<<s+1<<endl;
}
return 0;
}
C 思维递推
#include<iostream>
#include<cstring>
using namespace std;
typedef long long ll;
const int N=100;
ll F[N];
int main()
{
int n,kase=0;
F[1]=F[2]=0,F[3]=1,F[4]=F[5]=2;
for(int i=6;i<=76;i++)F[i]=F[i-2]+F[i-3];
while(~scanf("%d",&n)&&n){
printf("Case #%d: ",++kase);
printf("%lld\n",F[n-1]+F[n]);
}
return 0;
}
E 矩阵乘法
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
typedef long long ll;
const int N=22;
ll a[N][N],b[N][N],t[N][N];
int main()
{
int m1,n1,m2,n2,kase=0;
while(~scanf("%d%d%d%d",&m1,&n1,&m2,&n2)){
if(m1==0)break;
printf("Case #%d:\n",++kase);
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(t,0,sizeof(t));
for(int i=0;i<m1;i++){
for(int j=0;j<n1;j++)scanf("%lld",&a[i][j]);
}
for(int i=0;i<m2;i++){
for(int j=0;j<n2;j++)scanf("%lld",&b[i][j]);
}
if(n1!=m2){
printf("undefined\n");
continue;
}
for(int i=0;i<m1;i++){
for(int j=0;j<n2;j++){
for(int k=0;k<n1;k++){
t[i][j]+=a[i][k]*b[k][j];
}
}
}
for(int i=0;i<m1;i++){
printf("| ");
for(int j=0;j<n2;j++){
printf("%lld ",t[i][j]);
}
printf("|\n");
}
}
return 0;
}
F 数学规律+大数
规律:(n*(n+1)*(n+2)/6)的平方
ps:碰到这种样例那么有规律然后都能拆成平方的多想想规律
java版本:
import java.util.*;
import java.math.*;
import java.lang.*;
public class Main{
public static void main(String[] args){
Scanner in=new Scanner(System.in);
int t=in.nextInt();
while(t>0){
t--;
BigInteger n=in.nextBigInteger();
BigInteger ans;
ans=n.multiply(n.add(BigInteger.valueOf(1)));
ans=ans.multiply(n.add(BigInteger.valueOf(2)));
ans=ans.divide(BigInteger.valueOf(6));
ans=ans.multiply(ans);
System.out.println(ans);
}
}
}
G 数学
思路:纯数学计算利润
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int n,kase=0;
while(~scanf("%d",&n)&&n){
int a,b,c,d;
double ans=0,cost=0;
for(int i=1;i<=n;i++){
scanf("%d%d%d%d",&a,&b,&c,&d);
cost+=(a*7.5+b*24+c*32)/85+(a+b+c)*1.0/85*8;//总成本=肉成本+香料成本
ans+=a*0.8+b*1.0+c*1.2+d*0.6;//销售价=肉售价+nasi售价(0.8-0.2)
}
printf("Case #%d: RM%.2lf\n",++kase,ans-cost);
}
return 0;
}
J 斐波那契+高精度
Java版本:
import java.math.*;
import java.util.*;
import java.lang.*;
public class Main{
public static void main(String[] args){
Scanner in=new Scanner(System.in);
while(in.hasNext()){
int n=in.nextInt();
if(n==-1)break;
BigInteger a=BigInteger.valueOf(0);
BigInteger b=BigInteger.valueOf(1);
BigInteger ans=BigInteger.valueOf(0);
if(n==0){
System.out.println("Hour: "+n+": 0"+" cow(s) affected");
continue;
}
if(n==1){
System.out.println("Hour: "+n+": 1"+" cow(s) affected");
continue;
}
for(int i=2;i<=n;i++){
ans=a.add(b);
a=b;
b=ans;
}
System.out.println("Hour: "+n+": "+ans+" cow(s) affected");
}
}
}