Почему код показывает различное поведение при изменении порядка входных данных.
You are given a string S. Your task is to determine if sum of ASCII values of all character results in a perfect square or not. INPUTS ARE: 1) 2 MKNKEWIILKVRCNNWOGBVXKXRWRSDUOVJBLWFIFOWRMOUDFRRLVPLINEFIYIFNGORTLYFSPCLFSGIXACLVRXFHEMPDVUTEMLYAKETBIFIDNQCNUPMMNTTRGMXCJRHVFIWPOSSWABANTEDOURDKLAFSMDUVUEUAORRDKNCKQFAL d 2) 2 d MKNKEWIILKVRCNNWOGBVXKXRWRSDUOVJBLWFIFOWRMOUDFRRLVPLINEFIYIFNGORTLYFSPCLFSGIXACLVRXFHEMPDVUTEMLYAKETBIFIDNQCNUPMMNTTRGMXCJRHVFIWPOSSWABANTEDOURDKLAFSMDUVUEUAORRDKNCKQFAL
Что я уже пробовал:
#include <bits/stdc++.h> using namespace std; int ischeck(int n) { int z=sqrt(n); return ((z*z)==n); } int main() { int t; cin>>t; while(t--) { string s; cin.ignore(); getline(cin,s); int i,sum=0; for(i=0;i<s.length();i++) sum+=int(s[i]); if(ischeck(sum)) cout<<"1"<<endl; else cout<<"0"<<endl; } return 0; }
Richard MacCutchan
В чем же вопрос?
Prateek Krishna
Вам дается строка S. ваша задача состоит в том, чтобы определить, приводит ли сумма ASCII-значений всех символов к идеальному квадрату или нет.
Ввод:
Первая строка входных данных содержит одно целое число T, обозначающее количество тестовых случаев. Затем следуют T тестовых случаев. Каждого теста есть строка s
Выход:
Выведите 1, Если полученная сумма является идеальным квадратом, иначе выведите 0.
Ограничения:
1<=T<=100
1<=|S|<=1000
Richard MacCutchan
Прекрасно, но что же это такое твой вопрос?
Prateek Krishna
когда я ввел входные данные
2
д
дддд
его выход равен 1 0.
но когда я ввел ввод как
2
дддд
д
выход равен 1 1.
почему это происходит?
Richard MacCutchan
Без понятия. Но вы можете начать с печати значений, которые вы вычисляете как сумму, а также квадратный корень. Скорее всего, использование целочисленных значений означает, что вы не получите точных результатов для некоторых чисел, так как квадратные корни многих чисел не являются точными целыми числами.