Estou com um problema bem estranho na minha tarefa 4.
Implementei o algoritmo do mergesort, e adaptei um contador nele. Como eu já tinha testado anteriormente, para esse problema o (int) não é suficiente para problemas muito grandes. Então usei o (unsigned long long) para resolver meu problema. Porém o long tem um problema ao fazer certas somas, tipo 1+3+6=12, não sei porque. Até um cast de double pra unsigned long long da esse mesmo problema. Submeti no uVA com inteiro e ele retorna erro, agora eu não sei se é por estourar o (int) ou se minhas contas estão erradas.
Já testei pra long long, long, unsigned long. Tudo o mesmo erro. Quero saber oque eu faço. Devo mandar meu código com unsigned long long mesmo, ou com int?
Thomas
eu mandei só com long e deu AC, verifica teu algoritmo
[]s
Cauê
[]s
Cauê
Bom, no meu caso o long não funcionou. Só mudei a variável pra unsigned long long e o juiz aceitou, então é bom verificar isso também.
Muito estranha essa história do unsigned long long int ter essa aritmética...
Assim, uma coisa que as vezes pode ter acontecido é você estar imprimindo essa variável com o identificador errado... Por ex.:
para imprimir um unsigned long long int certifique-se de estar usando: printf("%llu"); ou printf("%I64u");
ao invés, de por ex.: printf("%lld"); ou até mesmo printf("%d");
dá uma verificada nisso aí...
Assim, uma coisa que as vezes pode ter acontecido é você estar imprimindo essa variável com o identificador errado... Por ex.:
para imprimir um unsigned long long int certifique-se de estar usando: printf("%llu"); ou printf("%I64u");
ao invés, de por ex.: printf("%lld"); ou até mesmo printf("%d");
dá uma verificada nisso aí...
Obrigado pela chamada de atenção e pelo exemplo. Eu estava usando %llo pra imprimir, mas com o %llu ele imprimiu corretamente e foi aceito no uVA.
Agradeço a ajuda.
Agradeço a ajuda.