一个小题目,高手做做
有一天,文藻外语学院里某单位的某个人神秘兮兮的说:“我们这个单位的所有工作人员 ,包括我在内,总共有16名教师和助理。而且无论有没有把我计算在内,以下的情况都不会改变:1,教师多于助理。
2,男助理多于男教师。
3,男教师多于女教师。
4,最少有一位女助理。
请问,文藻外语学院该单位所有教职员工的性别,职级以及人数各是多少?而讲这段话的人又是其中的什么人?
能用程序实现吗?请各位高手看看
#include<stdio.h> void main() { int mt,ma,ft,fa; int a[4],b[4]; for(mt=0;mt<=16;mt++) for(ma=0;ma<=16;ma++) for(ft=0;ft<=16;ft++) for(fa=0;fa<=16;fa++) if((mt+ft+ma+fa==16)&&(mt+ft>ma+fa)&&(ma>mt)&&(mt>ft)&&(fa>=1)) { a[0]=mt;a[1]=ft;a[2]=ma;a[3]=fa; printf("男教师:%d\t女教师:%d\t男助教:%d\t女助教:%d\n",mt,ft,ma,fa); } for(mt=0;mt<=15;mt++) for(ma=0;ma<=15;ma++) for(ft=0;ft<=15;ft++) for(fa=0;fa<=15;fa++) if((mt+ft+ma+fa==15)&&(mt+ft>ma+fa)&&(ma>mt)&&(mt>ft)&&(fa>=1)) { b[0]=mt;b[1]=ft;b[2]=ma;b[3]=fa; printf("男教师:%d\t女教师:%d\t男助教:%d\t女助教:%d\n",mt,ft,ma,fa); } if(a[0]>b[0]) printf("说这话的是男教师\n"); else if(a[1]>b[1]) printf("说这话的是女教师\n"); else if(a[2]>b[2]) printf("说这话的是男助教\n"); else printf("说这话的是女助教\n"); }
# include <stdio.h> int judge (int mt,int ma,int ft,int fa) { if ( (mt+ft)>(ma+fa) && ma>mt && mt>ft && fa>=1) return 1; else return 0; } int main(void) { int mt,ma,ft,fa; for (mt=0; mt<16; ++mt) for (ma=0; ma<16; ++ma) for (ft=0; ft<16; ++ft) for (fa=0; fa<16; ++fa) if ((mt+ma+ft+fa)==16 && judge(mt,ma,ft,fa)) if ( judge (mt-1,ma,ft,fa) ) printf("讲话的是男教师,男教师有%d,男助理有%d,女教师有%d,女助理有%d\n",mt,ma,ft,fa); else if ( judge (mt,ma-1,ft,fa) ) printf("讲话的是男助理,男教师有%d,男助理有%d,女教师有%d,女助理有%d\n",mt,ma,ft,fa); else if ( judge (mt,ma,ft-1,fa) ) printf("讲话的是女教师,男教师有%d,男助理有%d,女教师有%d,女助理有%d\n",mt,ma,ft,fa); else if ( judge (mt,ma,ft,fa-1) ) printf("讲话的是女助理,男教师有%d,男助理有%d,女教师有%d,女助理有%d\n",mt,ma,ft,fa); else printf("本题无解\n"); return 0; }