http://bailian.openjudge.cn/tm201502/A/

  • 陶陶家的院子里有一棵苹果树,每到秋天树上就会结出10个苹果。苹果成熟的时候,陶陶就会跑去摘苹果。陶陶有个30厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试。

    现在已知10个苹果到地面的高度,以及陶陶把手伸直的时候能够达到的最大高度,请帮陶陶算一下她能够摘到的苹果的数目。假设她碰到苹果,苹果就会掉下来。

  • 输入

  • 包括两行数据。第一行包含10个100到200之间(包括100和200)的整数(以厘米为单位)分别表示10个苹果到地面的高度,两个相邻的整数之间用一个空格隔开。第二行只包括一个100到120之间(包含100和120)的整数(以厘米为单位),表示陶陶把手伸直的时候能够达到的最大高度。

  • 输出

  • 包括一行,这一行只包含一个整数,表示陶陶能够摘到的苹果的数目。

  • 样例输入

  • 100 200 150 140 129 134 167 198 200 111
    110
  • 样例输出

  • 5


这里注意只要人高+30 大于等于苹果树高度即可,注意别漏了等于的情况

#include <stdio.h>
int main()
{
int count = 10;
int a[10];
int human;
int result = 0;
for(int i=0;i<count;i++){
scanf("%d",&a[i]);
}
scanf("%d",&human);
for(int i = 0;i<count;i++){
if (a[i]=<human+30)
result++;
}
printf("%d",result);
return 0;
}

 

https://codility.com/demo/results/trainingNQKV2V-H3Y/#

binary gap within a positive integer N is any maximal sequence of consecutive zeros that is surrounded by ones at both ends in the binary representation of N.

For example, number 9 has binary representation 1001 and contains a binary gap of length 2. The number 529 has binary representation 1000010001 and contains two binary gaps: one of length 4 and one of length 3. The number 20 has binary representation 10100 and contains one binary gap of length 1. The number 15 has binary representation 1111 and has no binary gaps.

Write a function:

int solution(int N);

that, given a positive integer N, returns the length of its longest binary gap. The function should return 0 if N doesn't contain a binary gap.

For example, given N = 1041 the function should return 5, because N has binary representation 10000010001 and so its longest binary gap is of length 5.

Assume that:

  • N is an integer within the range [1..2,147,483,647].

Complexity:

  • expected worst-case time complexity is O(log(N));

  • expected worst-case space complexity is O(1).


大意是统计一个整数N 的二进制串里,最长的被两个1包围的0串是多少位

思路是从右边开始数起,只要遇到0就开始计数。当碰到第一个1的时候开始标记“右边有1”,并且仅在“右边有1”的时候比较当前计数值是否max值,否则标记“右边有1”。重置计数值,移位继续处理。

int solution(int N) {
	// write your code in C++11 (g++ 4.8.2)
	int count = 0;
	int max = 0;
	int hadrightone = 0;
	while (N) {
		if (N % 2 == 0){
			count++;
			N = N / 2;
		}
		else {
			if (hadrightone)
				max = (max > count ? max : count);
			else {
				
				hadrightone = 1;
			}
			N = N/2;
			count = 0;
		}	
	}
	return max;
}