140729暑期培训.txt

来源:互联网 发布:mysql批量更新数据手动 编辑:程序博客网 时间:2024/05/21 03:25
1、对于题目给出的已知数据是一个开始时间和一个结束时间的题
   第一反应会是将开始时间进行排序
   但这样做比较麻烦
   做题应该多换几个角度和思维
   将这类题按结束时间进行排序会简单的多
2、结构体
   struct move           //struct是结构体函数
   {
        int a;       //结构体成员
        double b;
        char c;        
   }num[100];       //一个结构体数组可以包含多个结构体成员,而且结构体成员的类型可以不同
   int main()
   {
       for(i=0;i<n;i++)
           scanf("%d %lf %c",&num[i].a,&num[i].b,&num[i].c);
       .......
   }
3、结构体一级快排
   #include<stdlib.h>                //qsort排序必加头文件
   int cmp(const void *a,const void *b)
   {
       return (*(move *)a).a-(*(move *)b).a;
       //   move---结构体函数名
       //   .a---结构体成员名
       //  因为是对成员a进行排序,而a又是int型,所以用的是int快排类型
       //  要根据排序的成员的类型决定return后面的格式
   }
   int main()
   {
       ...
       qsort(num,n,sizeof(num[0]),cmp);
   }
4、/*汉字机内码在计算机的表达方式的描述是,使用二个字节,每个字节最高位一位为1。
     计算机中, 补码第一位是符号位, 1 表示为 负数,
     所以 汉字机内码的每个字节表示的十进制数都是负数
         所以统计输入字符串含有几个汉字,
  只需求出字符串中小于0的字符有几个,将它除以2就得到答案  */
     #include<stdio.h>
     #include<string.h>
     char s[1005000];
     int hanzi(char a)
     {
   if(~(a>>8)==0)
   //   ~ 按位取反 ,就是使每一位上的 0变 1,1变 0;
   //   >>  右移运算符,右边的整形表达式指定移动的位数
       return 1;
   else
       return 0;
     }
     int main()
     {
   int n;
   int i,len,num;
   scanf("%d",&n);
   getchar();
   while(n--)
   {
  gets(s);
  len=strlen(s);
  num=0;
  for(i=0;i<len;i++)
      if(hanzi(s[i]))
       num++;
  printf("%d\n",num/2);
   }
   return 0;
     }
5、/*思路:               n^n:
  用科学计数法表示为  n^n=a*10^x
  两边同时取对数  lg(n^n)=lg(a*10^x)
         化简得   n*lg(n)=lg(a)+x
         移位得     lg(a)=n*lg(n)-x
                        a=10^[n*lg(n)-x]
  又因为x是 n^n 的位数
  实际上就是x 就是lg(N^N) 向下取整数,表示为[lg(N^N)]
                        a=10^{n*lg(n)-[lg(n^n)]}
    (int)a即为所求     
  巧妙合理的运用数学知识才是王道
  活用  log  的运算技巧
  */
#include<stdio.h>
#include<math.h>
int main()
{
 int n;
 double i;
 __int64 s,m;
 scanf("%d",&n);
 while(n--)
 {
  scanf("%I64d",&m);
  i=m*log10(m*1.0);
  i-=(__int64)i;
  s=(__int64)pow(10,i);
  //乘幂运算 pow(x,y) 表示 x 的 y 次幂
  printf("%I64d\n",s);
 }
 return 0;
}
0 0