3532. 热河路

10152510300

第十个点一直RE?

upper1027

cin慢是有原因的,其实默认的时候,cin与stdin总是保持同步的,也就是说这两种方法可以混用,而不必担心文件指针混乱,同时cout和stdout也一样,两者混用不会输出顺序错乱。正因为这个兼容性的特性,导致cin有许多额外的开销,如何禁用这个特性呢?只需一个语句std::ios::sync_with_stdio(false);,这样就可以取消cin于stdin的同步了。

Kuroko

感谢大佬,成功ac了

这辈子不可能刷oj的

找1出现的位置的规律即可:

include

include

int main()
{
int x,i;
scanf(“%d”,&x);
for(i=0;i0&&(s-1)%2==0) printf(“1\n”);
}
else{
printf(“0\n”);
}
}
return 0;
}

mansoup

//类似公务员考试找规律

include

using namespace std;
//被迫用C?
int main(){
int N;
scanf(“%d”,&N);
while(N–){
int num;
scanf(“%d”,&num);
if(num==1){
printf(“1\n”);
continue;
}
num–;
int i=sqrt(num<<1);
if((i*(i+1))>>1==num){//右移动比除法快
printf(“1\n”);
}else{
printf(“0\n”);
}
}
}

lawson

你好,请问你的代码中的这个左移与右移的原理是什么啊?

mansoup

看0和1的规律,两个1之间的0每次增加1个,等差数列公式 (/2)=>(>>)!

10175101178

第10个点一直都是runtime error求指教一下

include

using namespace std;
typedef long long ll;
int main()
{
ll t,p;
cin>>t;
while(t–)
{
cin>>p;

    double x=(1+sqrt(1.0+8.0*(p-1)))/2.0;
              if(x-(ll)x==0)
              cout&lt;&lt;"1"&lt;&lt;endl;
              else
                  cout&lt;&lt;"0"&lt;&lt;endl;

    }

}

Kevin_K
Hints:

cin->RE.

柴柴柴拆柴柴

初等数学题

#include<stdio.h>
#include<math.h>
#include<stdlib.h>

double solution(long n);
long mysum(long n);

int main(void)
{
    int *anslst;
    long *queslst;
    int i,cases;
    double mysolution;

    scanf("%d",&cases);
    anslst=(int*)malloc(cases*sizeof(int));
    queslst=(long*)malloc(cases*sizeof(long));

    for(i=0;i<cases;i++)
        scanf("%ld",&queslst[i]);
    for(i=0;i<cases;i++)
    {
        mysolution=solution(queslst[i]);
        if(mysolution-(long)mysolution==0)
        {
            anslst[i]=0;
        }
        else
        {
            if(queslst[i]-mysum((long)mysolution)==1)
                anslst[i]=1;
            else
                anslst[i]=0;
        }
    }

    for(i=0;i<cases;i++)
        printf("%d\n",anslst[i]);

    free(anslst);
    free(queslst);

    return 0;
}

double solution(long n)
{
    double result;
    result=(-1.0+sqrt(1+8.0*n))/2.0;

    return result;
}

long mysum(long n)
{
    return (n+1)*n/2;
}
Lucas

//贴出另一种解法,想法来源于实际生产中更愿意用空间换时间

include

include

//#include

define mMax 1000000010

using namespace std;

bool add[mMax]={false};
int n;
int que; //question

int main()
{
int tmp=1,i=1;
while(tmp<mMax)
{
add[tmp]=true;
tmp+=i;
i++;
}
while(scanf(“%d”,&n)!=EOF)
{
for(int i=0;i<n;i++)
{
scanf(“%d”,&que);
if(add[que]==true)printf(“1\n”);
else printf(“0\n”);
//fflush(stdout);
}
}
return 0;
}

Deuchie

我发现第十个点一个个试会TLE,所以用了二分法。

#include <cstdio>

inline unsigned get_uint() {
    unsigned ans = 0;
    signed char ch = getchar();
    while (ch < '0' || '9' < ch)
        ch = getchar();
    while ('0' <= ch && ch <= '9') {
        ans = ans * 10 + ch - '0';
        ch = getchar();
    }
    return ans;
}

void solve(int k, int bg, int ed) {
    int mid = (bg + ed) / 2;
    if (mid * (mid + 1) / 2 < k) {
        solve(k, mid + 1, ed);
        return;
    }
    if (k <= mid * (mid - 1) / 2) {
        solve(k, bg, mid);
        return;
    }
    if (k == mid * (mid - 1) / 2 + 1)
        printf("1\n");
    else
        printf("0\n");
}

int main() {
    unsigned n = get_uint();
    for (int i = 0; i < n; ++i) {
        unsigned k = get_uint();
        solve(k, 1, 44722);
    }
}
TechAoba

题目中数据量较大,我用了快读。开始想到用hash表来做,但是不太熟悉,于是直接开根号再判断,算式是等差公式。
int read() {
bool flag = false;
int num = 0;
char c = getchar();
while((c<‘0’ || c>‘9’ )&& c!=’-‘) c = getchar();
if(c==’-‘) flag = true, c = getchar();
while(c>=‘0’ && c<=‘9’) num = (num<<3) + (num<<1) + (c^48), c = getchar();
return flag?-num:num;
}

int main()
{
int n = read(), a, t;
while(n–) {
a = read();
t = (a-1)2;
t = (int)sqrt(t);
//cout<<”t是”<<t<<endl;
if((t+1)
t/2+1==a) printf(“1\n”);
else printf(“0\n”);
}
return 0;
}

10175101178

看了一楼指导,更改了代码成功AC了

include

using namespace std;
typedef long long ll;
int main()
{
ll t,p;
std::ios::sync_with_stdio(false);
std::cin>>t;
while(t–)
{std::cin>>p;
double x=(1+sqrt(1.0+8.0*(p-1)))/2.0;
if(x-(ll)x==0)
cout<<”1”<<endl;
else
cout<<”0”<<endl;

    }

}

你当前正在回复 博客/题目
存在问题!