1003 玩骰子
一道模拟题。。
#include<stdio.h> #include<iostream> #include<algorithm> #include<string.h> #include<math.h> using namespace std; int judg(int a1,int a2,int a3,int b1,int b2,int b3) { if(a1==a2 && a2==a3) { // printf("111111\n"); if(b1==b2 && b2==b3) { if(a1>b1) return 1; else return 0; } return 1; } else if((a1==a2 || a2==a3 )|| a1==a3) { //printf("22222\n"); if(b1==b2 && b2==b3) return 0; if(b1!=b2 && b2!=b3 && b1!=b3) return 1; else if(b1==b2 || b1==b3 ||b2==b3) { int same,dif; if(a1==a2) { same=a1; dif=a3; } else if(a2==a3) { same=a2; dif=a1; } else if(a1==a3) { same=a1; dif=a2; } int sameb,difb; if(b1==b2) { sameb=b1; difb=b3; } else if(b2==b3) { sameb=b2; difb=b1; } else if(b1==b3) { sameb=b1; difb=b2; } if(same>sameb) return 1; else if(same==sameb) { if(dif>difb) return 1; else return 0; } return 0; } return 0; } else if(a1!=a2 && a2!=a3 &&a1!=a3){ // printf("333333\n"); if(b1==b2 || b2==b3 || b1==b3) return 0; else{ if(a3>b3) return 1; else if(a3== b3) { if(a2>b2) return 1; else if(a2==b2) { if(a1>b1) return 1; } return 0; } return 0; } return 0; } return 0; } int main() { int t; int a[4],b[4],c[4]; scanf("%d",&t); while(t--) { memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); memset(c,0,sizeof(c)); scanf("%d%d%d%d%d%d",&a[1],&a[2],&a[3],&b[1],&b[2],&b[3]); sort(a+1,a+4); sort(b+1,b+4); if(judg(a[1],a[2],a[3],b[1],b[2],b[3])==1) { printf("1.000\n"); continue; } int ans,hui; int max=0; for(int i=1;i<=3;i++) { ans=0; for(int j=1;j<=6;j++) { c[1]=a[1],c[2]=a[2],c[3]=a[3]; c[i]=j; sort(c+1,c+4); if(judg(c[1],c[2],c[3],b[1],b[2],b[3])==1) {ans++; //printf("%d\n",j); } } if(ans>max) max=ans; // printf("%d\n",ans); } double sss; sss=max/6.0; printf("%.3lf\n",sss); } }1006 指数逆袭
一个dfs,暴力不知道能不能做。。
#include <iostream> #include <cstring> #include <cstdio> #include <algorithm> #include <cmath> #include <cstdlib> #include <limits> #include <queue> #include <stack> #include <vector> #include <map> using namespace std; typedef long long LL; #define N 1100 #define INF 0x3f3f3f3f #define PI acos (-1.0) #define EPS 1e-8 #define met(a, b) memset (a, b, sizeof (a)) int val[N], ans[N], maxn; void DFS (int n, int m, int len) { if (n%m==0) { val[len] = m; DFS (n/m, m+1, len+1); } else if (maxn < len) { maxn = len; for (int i=0; i<len; i++) ans[i] = val[i]; } return; } int main () { int n; while (scanf ("%d", &n) != EOF) { met (val, 0); met (ans, 0); maxn = 0; int k = sqrt (n); for (int i=2; i<=k; i++) DFS (n, i, 0); if (!maxn) { maxn = 1; ans[0] = n; } printf ("%d\n", maxn); for (int i=0; i<maxn-1; i++) printf ("%d*", ans[i]); printf ("%d\n", ans[maxn-1]); } return 0; }hdu校赛题意读错,自己还是太蠢了。。