过了但是还是有个问题,关于cout和printf

P1464 Function

creeperboom @ 2023-08-25 12:22:22

在代码输出的时候我本来用的是cout直接输出,但是全wa了,后来我根据题解一步步对照修改,发现是输出问题,在printf输出我函数结果时正常,但是cout就不行了(就是代码最底下注释的那一行)这是因为什么特性导致的呢?

#include<iostream>
#include<cstring>
using namespace std;
long long fc[30][30][30];
long long fction(long long a, long long b,long long c)
{
    if(a<=0||b<=0||c<=0)return 1;
    else if(fc[a][b][c])return fc[a][b][c];
    else if(a>20||b>20||c>20)fc[a][b][c]=fction(20,20,20);
    else if(a<b&&b<c) fc[a][b][c]=fction(a,b,c-1)+fction(a,b-1,c-1)-fction(a,b-1,c);
    else fc[a][b][c]=fction(a-1,b,c)+fction(a-1,b-1,c)+fction(a-1,b,c-1)-fction(a-1,b-1,c-1);
    return fc[a][b][c];
}
int main()
{
    ios::sync_with_stdio(0);
    long long a,b,c;
    while(scanf("%lld%lld%lld",&a,&b,&c)==3)
    {
        if(a==-1&&b==-1&&c==-1)
        {
            break;
        }
        printf("w(%lld, %lld, %lld) = ",a,b,c);
        if(a>20) a=21;
        if(b>20) b=21;
        if(c>20) c=21;
        //printf("%lld\n",fction(a,b,c));
        cout<<fction(a,b,c)<<endl;
    }
}

by Bingxiu @ 2023-08-25 12:34:23

@creeperboom ios::sync_with_stdio(0); 导致的,同步流被关了别混合使用


by creeperboom @ 2023-08-25 13:13:15

@Bingxiu 也就是说关了同步流就不能同时用printf和cout了是吧,谢谢


by PhiliaTheCat @ 2023-08-27 12:06:08

@creeperboom 严格意义上来说,关了同步以后就不建议混用stdio和iostream了,会发生奇怪的事情


by AnnaQ @ 2023-09-06 09:57:42

@creeperboom 你都没有导库,竟然直接可以有scanf和printf


|