B题
import java.io.*; import java.util.*; public class Main { static int day1[]={31,29,31,30,31,30,31,31,30,31,30,31}; static int day2[]={31,28,31,30,31,30,31,31,30,31,30,31}; public static int dateTransform(int x,int y,int z){ int i;int ans=0; if((x%4==0&&x%100!=0)||(x%400==0)){ for(i=1;i<y;i++){ ans+=day1[i-1]; } ans+=z; return ans; } else{ for(i=1;i<y;i++){ ans+=day2[i-1]; } ans+=z; return ans; } } public static void main(String[] args) { int a,b,c; Scanner sc=new Scanner(System.in); while(sc.hasNextInt()){ a=sc.nextInt(); b=sc.nextInt(); c=sc.nextInt(); System.out.printf("%d ",dateTransform(a,b,c)); } } }
A题
c++:
#include<stdio.h> #include<string.h> using namespace std; int a[10]; char tmp[5]; int isok(int x,int y) { memset(a,0,sizeof(a)); int flag=1; int z=x+y; if(z>987) { return 0;} int i; sprintf(tmp,"%d",x); for(i=0; i<3; i++)a[tmp[i]-'0']=1; sprintf(tmp,"%d",y); for(i=0; i<3; i++)a[tmp[i]-'0']=1; sprintf(tmp,"%d",z); for(i=0; i<3; i++)a[tmp[i]-'0']=1; for(i=1; i<10; i++) { if(a[i]==0)flag=0; } return flag; } int main() { int i,j,k=0; for(i=123; i<=987; i++) { for(j=123; j<=987; j++) { if(isok(i,j)>0) { printf("%d+%d=%d ",i,j,i+j); k++; } } } printf("%d ",k); return 0; }
Java 版
import java.io.*; import java.util.*; public class Main { public static int isok(int x,int y){ int[]a=new int[10]; int flag=1; int z=x+y; int i; if(z>987){return 0;} a[x/100]=1; a[x%10]=1; a[x/10%10]=1; a[y/100]=1; a[y%10]=1; a[y/10%10]=1; a[z/100]=1; a[z%10]=1; a[z/10%10]=1; for(i=1; i<10; i++){if(a[i]==0)flag=0;} return flag; } public static void main(String[] args) { // TODO Auto-generated method stub int i,j;int cnt=0; for(i=123; i<=987; i++) { for(j=i+1; j<=987; j++) { if(isok(i,j)==1){ cnt++; System.out.printf("%d+%d=%d ",i,j,i+j); } } } System.out.printf("Total of %d Expressions. ",cnt); } }
废弃代码段
// public static int isok(int x,int y){ // int[]a=new int[10]; // int flag=1; // int z=x+y; // String s; // if(z>987){return 0;} // int i; // s=String.valueOf(x); // for(i=0; i<3; i++)a[s.charAt(i)-'0']=1; // s=String.valueOf(y); // for(i=0; i<3; i++)a[s.charAt(i)-'0']=1; // s=String.valueOf(z); // for(i=0; i<3; i++)a[s.charAt(i)-'0']=1; // for(i=1; i<10; i++){if(a[i]==0)flag=0;} // return flag; // }