HDU 4279 Number 规律题

题意:

定义函数F(x) :

区间[1,x]上的y是满足:GCD(x,y)>1 && x%y>0的 y的个数。

问:对于任意区间[l,r] 上的F(l···r) 有几个函数值是奇数的。

打表找规律。

打的是[1,x]区间的结果

把所有结果不相同的值打出来(因为结果是递增的,所以只观察不相同的结果)

发现:ans = x/2-2 || x/2-1

再把所有结果不同 && x/2-1的值打出来

发现 sqrt(x) &1 == 1

得到:ans = x/2-2 + (sqrt(x)&1);

且x<6时 ans = 0

不知为何交c++就错。

#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
#include<vector>
#include<queue>
#include<math.h>
using namespace std;
#define ll __int64
/*
int Gcd(int x,int y){
	if(x>y)swap(x,y);
	while(x){
		y %= x;
		swap(x,y);
	}
	return y;
}
int f(int x){
	int ans = 0;
	for(int i = 2; i < x; i++)
		ans += (Gcd(i,x)!=1)&&(x%i);
	return ans;
}
int main(){
	int n, last = -1;
	for(int j = 1; j <= 10000; j++){
		n = j;
		int ans = 0;
		for(int i = 1; i <= n; i++)ans += f(i)&1;
		if(ans!=last && j/2!=ans+2){
			last = ans,printf("%5d:%d\n",j,ans);
		}
	}
	return 0;
}/*
*/
int sqrt(__int64 l,__int64 r,__int64 a)
{
	__int64 mid=(l+r)/2;
	if(l>r)
		return r;
	if(a/mid>mid)
		return sqrt(mid+1,r,a);
	else if(a/mid<mid)
		return sqrt(l,mid-1,a);
	else
		return mid;
}
ll go(ll x){
	if(x<5)return 0;
	ll ans = x/2-2;
	ll dou = sqrt(1,x,x);
	dou = dou&1;
	return ans+dou;
}
int main(){
	ll l,r; int T;scanf("%d",&T);
	while(T--){
		scanf("%I64d %I64d",&l,&r);
		printf("%I64d\n", go(r)-go(l-1));
	}
	return 0;
}

HDU 4279 Number 规律题,布布扣,bubuko.com

时间: 2024-12-19 23:22:20

HDU 4279 Number 规律题的相关文章

HDU 4937 Lucky Number 规律题_(:зゝ∠)_

把所有合法的进制打出来会发现合法的进制都是在 n/3 n/4 n/5的边上 然后暴力边上的进制数.. #include <cstdio> #include <set> typedef long long ll; bool ok(ll x, ll y) { ll v; while (x > 0) { v = x % y; if (v != 3 && v != 4 && v != 5 && v != 6) return false;

HDU 4279 Number

转载请注明出处:http://blog.csdn.net/u012860063?viewmode=contents 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4279 HDU集训队选拔赛地点:3教3楼机房,时间:5月10日(周六)12:00开始,请相互转告,谢谢~ 百度之星编程大赛--您报名了吗? Number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768

HDU 4279 Number(找规律)

Number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 4288    Accepted Submission(s): 1066 Problem Description Here are two numbers A and B (0 < A <= B). If B cannot be divisible by A, and A

1005:Number Sequence(hdu,数学规律题)

Problem Description A number sequence is defined as follows: f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7. Given A, B, and n, you are to calculate the value of f(n). Input The input consists of multiple test cases. Each test case co

HDU 4279 Number(数学题,找规律)

题目大意: Here are two numbers A and B (0 < A <= B). If B cannot be divisible by A, and A and B are not co-prime numbers, we define A as a special number of B. For each x, f(x) equals to the amount of x's special numbers. For example, f(6)=1, because 6

HDU 4279 Number 坑爹的迷之精度

题目描述 首先定义"special number": 如果对于一个数字B,存在一个数字A(0<A<=B),并同时满足 B%A=0 和 gcd(A,B) != 1 ,那么我们就说A是B的"special number". 再定义一个函数f(x)表示x的"special number"的数量.并且如果f(x)%2=1时,我们就称x为"real number". 现在给你两个数字x和y且1<=x<=y<

HDU 5312 Sequence (规律题)

题意:一个序列的第n项为3*n*(n-1)+1,而 n>=1,现在给一个正整数m,问其最少由多少个序列中的数组成? 思路:首先,序列第1项是1,所以任何数都能构成了.但是最少应该是多少?对式子进行变形,6*(n*(n-1)/2)+1,看到了三角形数n*(n-1)/2,那么应该是6*(任意自然数)+x=m才对,因为最多只要3个三角形数就能组成任何自然数啦. 不妨试试m%6是多少?这样试图求x可以吗?因为任意自然数最多由3个组成,如果是k个,那么应该x>=k,别忘了还有个+1的项.x-k那部分,就

hdu 4279&quot;Number&quot;(数论)

传送门 待参考资料: [1]:https://blog.csdn.net/u010709592/article/details/13615763 原文地址:https://www.cnblogs.com/violet-acmer/p/10676924.html

HDU 4952 Number Transformation 规律题

打表可以知道到后面增量都一样了,, 推论就是  i 和 i+1 互质 #include <cstdio> #include <algorithm> #include <cstring> #include <iostream> using namespace std; typedef long long ll; const ll mx = 120000; int main() { int cas = 0; ll x, k, y, dis, i; while (